Skip to content

Commit

Permalink
Merge pull request #2039 from jenshnielsen/move_parameter_tests
Browse files Browse the repository at this point in the history
Move parameter tests to their own dir
  • Loading branch information
jenshnielsen authored Jun 10, 2020
2 parents b056c86 + a9a4dec commit 793e2cf
Show file tree
Hide file tree
Showing 13 changed files with 699 additions and 668 deletions.
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
qcodes/_version.py export-subst
* text=auto eol=lf
*.py text
*.{cmd,[cC][mM][dD]} text eol=crlf
*.{bat,[bB][aA][tT]} text eol=crlf
16 changes: 16 additions & 0 deletions qcodes/tests/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from time import sleep
import cProfile

from qcodes.utils.metadata import Metadatable

if TYPE_CHECKING:
from _pytest._code.code import ExceptionInfo
Expand Down Expand Up @@ -118,3 +119,18 @@ def error_caused_by(excinfo: 'ExceptionInfo', cause: str) -> bool:
return cause in str(root_traceback)


class DumyPar(Metadatable):

"""Docstring for DumyPar. """

def __init__(self, name):
super().__init__()
self.name = name
self.full_name = name

def __str__(self):
return self.full_name

def set(self, value):
value = value * 2
return value
Empty file.
141 changes: 141 additions & 0 deletions qcodes/tests/parameter/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
import pytest

from qcodes.instrument.parameter import Parameter
import qcodes.utils.validators as vals

NOT_PASSED = 'NOT_PASSED'


@pytest.fixture(params=(True, False, NOT_PASSED))
def snapshot_get(request):
return request.param


@pytest.fixture(params=(True, False, NOT_PASSED))
def snapshot_value(request):
return request.param


@pytest.fixture(params=(None, False, NOT_PASSED))
def get_cmd(request):
return request.param


@pytest.fixture(params=(True, False, NOT_PASSED))
def get_if_invalid(request):
return request.param


@pytest.fixture(params=(True, False, None, NOT_PASSED))
def update(request):
return request.param


@pytest.fixture(params=(True, False))
def cache_is_valid(request):
return request.param


class GettableParam(Parameter):
""" Parameter that keeps track of number of get operations"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._get_count = 0

def get_raw(self):
self._get_count += 1
return 42


class BetterGettableParam(Parameter):
""" Parameter that keeps track of number of get operations,
But can actually store values"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._get_count = 0

def get_raw(self):
self._get_count += 1
return self.cache._raw_value


class SettableParam(Parameter):
""" Parameter that keeps track of number of set operations"""
def __init__(self, *args, **kwargs):
self._set_count = 0
super().__init__(*args, **kwargs)

def set_raw(self, value):
self._set_count += 1


class OverwriteGetParam(Parameter):
""" Parameter that overwrites get."""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._value = 42
self.set_count = 0
self.get_count = 0

def get(self):
self.get_count += 1
return self._value


class OverwriteSetParam(Parameter):
""" Parameter that overwrites set."""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self._value = 42
self.set_count = 0
self.get_count = 0

def set(self, value):
self.set_count += 1
self._value = value


class GetSetRawParameter(Parameter):
""" Parameter that implements get and set raw"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)

def get_raw(self):
return self.cache.raw_value

def set_raw(self, value):
pass


class BookkeepingValidator(vals.Validator):
"""
Validator that keeps track of what it validates
"""
def __init__(self, min_value=-float("inf"), max_value=float("inf")):
self.values_validated = []

def validate(self, value, context=''):
self.values_validated.append(value)

is_numeric = True


class MemoryParameter(Parameter):
def __init__(self, get_cmd=None, **kwargs):
self.set_values = []
self.get_values = []
super().__init__(set_cmd=self.add_set_value,
get_cmd=self.create_get_func(get_cmd), **kwargs)

def add_set_value(self, value):
self.set_values.append(value)

def create_get_func(self, func):
def get_func():
if func is not None:
val = func()
else:
val = self.cache.raw_value
self.get_values.append(val)
return val
return get_func
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,9 @@
import numpy as np

from qcodes.instrument.parameter import combine
from qcodes.utils.metadata import Metadatable
from qcodes.utils.helpers import full_class


class DumyPar(Metadatable):

"""Docstring for DumyPar. """

def __init__(self, name):
super().__init__()
self.name = name
self.full_name = name

def __str__(self):
return self.full_name

def set(self, value):
value = value * 2
return value
from qcodes.utils.helpers import full_class
from ..common import DumyPar


class TestMultiPar(unittest.TestCase):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
# Disable warning that is created by using fixtures
# pylint: disable=redefined-outer-name


@pytest.fixture()
def numeric_val():
yield 1
Expand Down
File renamed without changes.
Loading

0 comments on commit 793e2cf

Please sign in to comment.