Add desc-support to traits
This commit is contained in:
parent
4156c37818
commit
5e2bbedd52
2 changed files with 62 additions and 22 deletions
|
|
@ -403,8 +403,8 @@ class TestTraitCounter(_TraitHandlerBase):
|
||||||
descs={
|
descs={
|
||||||
0: "range0",
|
0: "range0",
|
||||||
2: "range1",
|
2: "range1",
|
||||||
5: "range3",
|
5: "range2",
|
||||||
7: "range4",
|
7: "range3",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
self.trait = self.traithandler.get("test1")
|
self.trait = self.traithandler.get("test1")
|
||||||
|
|
@ -424,13 +424,13 @@ class TestTraitCounter(_TraitHandlerBase):
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"max": 10,
|
"max": 10,
|
||||||
"extra_val1": "xvalue1",
|
"extra_val1": "xvalue1",
|
||||||
"extra_val2": "xvalue2"
|
"extra_val2": "xvalue2",
|
||||||
},
|
|
||||||
"descs": {
|
"descs": {
|
||||||
0: "range0",
|
0: "range0",
|
||||||
2: "range1",
|
2: "range1",
|
||||||
5: "range3",
|
5: "range2",
|
||||||
7: "range4",
|
7: "range3",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -549,19 +549,23 @@ class TestTraitCounter(_TraitHandlerBase):
|
||||||
|
|
||||||
def test_descs(self):
|
def test_descs(self):
|
||||||
"""Test descriptions"""
|
"""Test descriptions"""
|
||||||
|
self.trait.min = -5
|
||||||
self.trait.mod = 0
|
self.trait.mod = 0
|
||||||
self.current = 0
|
self.assertEqual(self._get_values(), (1, 0, 1, -5, 10))
|
||||||
|
self.trait.current = -2
|
||||||
self.assertEqual(self.trait.desc(), "range0")
|
self.assertEqual(self.trait.desc(), "range0")
|
||||||
self.current = 1
|
self.trait.current = 0
|
||||||
self.assertEqual(self.trait.desc(), "range0")
|
self.assertEqual(self.trait.desc(), "range0")
|
||||||
self.current = 3
|
self.trait.current = 1
|
||||||
self.assertEqual(self.trait.desc(), "range1")
|
self.assertEqual(self.trait.desc(), "range1")
|
||||||
self.current = 5
|
self.trait.current = 3
|
||||||
|
self.assertEqual(self.trait.desc(), "range2")
|
||||||
|
self.trait.current = 5
|
||||||
|
self.assertEqual(self.trait.desc(), "range2")
|
||||||
|
self.trait.current = 9
|
||||||
|
self.assertEqual(self.trait.desc(), "range3")
|
||||||
|
self.trait.current = 100
|
||||||
self.assertEqual(self.trait.desc(), "range3")
|
self.assertEqual(self.trait.desc(), "range3")
|
||||||
self.current = 9
|
|
||||||
self.assertEqual(self.trait.desc(), "range4")
|
|
||||||
self.current = 100
|
|
||||||
self.assertEqual(self.trait.desc(), "range4")
|
|
||||||
|
|
||||||
|
|
||||||
class TestTraitGauge(_TraitHandlerBase):
|
class TestTraitGauge(_TraitHandlerBase):
|
||||||
|
|
@ -575,7 +579,13 @@ class TestTraitGauge(_TraitHandlerBase):
|
||||||
base=8, # max = base + mod
|
base=8, # max = base + mod
|
||||||
mod=2,
|
mod=2,
|
||||||
extra_val1="xvalue1",
|
extra_val1="xvalue1",
|
||||||
extra_val2="xvalue2"
|
extra_val2="xvalue2",
|
||||||
|
descs={
|
||||||
|
0: "range0",
|
||||||
|
2: "range1",
|
||||||
|
5: "range2",
|
||||||
|
7: "range3",
|
||||||
|
}
|
||||||
)
|
)
|
||||||
self.trait = self.traithandler.get("test1")
|
self.trait = self.traithandler.get("test1")
|
||||||
|
|
||||||
|
|
@ -594,7 +604,12 @@ class TestTraitGauge(_TraitHandlerBase):
|
||||||
"min": 0,
|
"min": 0,
|
||||||
"extra_val1": "xvalue1",
|
"extra_val1": "xvalue1",
|
||||||
"extra_val2": "xvalue2",
|
"extra_val2": "xvalue2",
|
||||||
"descs": None
|
"descs": {
|
||||||
|
0: "range0",
|
||||||
|
2: "range1",
|
||||||
|
5: "range2",
|
||||||
|
7: "range3",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
def test_actual(self):
|
def test_actual(self):
|
||||||
|
|
@ -717,6 +732,25 @@ class TestTraitGauge(_TraitHandlerBase):
|
||||||
self.trait.mod -= 1
|
self.trait.mod -= 1
|
||||||
self.assertEqual(self.trait.percent(), "33.3%")
|
self.assertEqual(self.trait.percent(), "33.3%")
|
||||||
|
|
||||||
|
def test_descs(self):
|
||||||
|
"""Test descriptions"""
|
||||||
|
self.trait.min = -5
|
||||||
|
self.assertEqual(self._get_values(), (8, 2, 10, -5, 10))
|
||||||
|
self.trait.current = -2
|
||||||
|
self.assertEqual(self.trait.desc(), "range0")
|
||||||
|
self.trait.current = 0
|
||||||
|
self.assertEqual(self.trait.desc(), "range0")
|
||||||
|
self.trait.current = 1
|
||||||
|
self.assertEqual(self.trait.desc(), "range1")
|
||||||
|
self.trait.current = 3
|
||||||
|
self.assertEqual(self.trait.desc(), "range2")
|
||||||
|
self.trait.current = 5
|
||||||
|
self.assertEqual(self.trait.desc(), "range2")
|
||||||
|
self.trait.current = 9
|
||||||
|
self.assertEqual(self.trait.desc(), "range3")
|
||||||
|
self.trait.current = 100
|
||||||
|
self.assertEqual(self.trait.desc(), "range3")
|
||||||
|
|
||||||
|
|
||||||
class TestNumericTraitOperators(TestCase):
|
class TestNumericTraitOperators(TestCase):
|
||||||
"""Test case for numeric magic method implementations."""
|
"""Test case for numeric magic method implementations."""
|
||||||
|
|
|
||||||
|
|
@ -957,7 +957,7 @@ class CounterTrait(NumericTrait):
|
||||||
"mod": 0,
|
"mod": 0,
|
||||||
"min": None,
|
"min": None,
|
||||||
"max": None,
|
"max": None,
|
||||||
"descs": None:
|
"descs": None,
|
||||||
}
|
}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
@ -1087,7 +1087,8 @@ class CounterTrait(NumericTrait):
|
||||||
Retrieve descriptions of the current value, if available.
|
Retrieve descriptions of the current value, if available.
|
||||||
|
|
||||||
This must be a mapping {upper_bound_inclusive: text},
|
This must be a mapping {upper_bound_inclusive: text},
|
||||||
ordered from small to big.
|
ordered from small to big. Any value above the highest
|
||||||
|
upper bound will be included as being in the highest bound.
|
||||||
rely on Python3.7+ dicts retaining ordering to let this
|
rely on Python3.7+ dicts retaining ordering to let this
|
||||||
describe the interval.
|
describe the interval.
|
||||||
|
|
||||||
|
|
@ -1100,9 +1101,14 @@ class CounterTrait(NumericTrait):
|
||||||
return ""
|
return ""
|
||||||
value = self.actual
|
value = self.actual
|
||||||
# we rely on Python3.7+ dicts retaining ordering
|
# we rely on Python3.7+ dicts retaining ordering
|
||||||
|
highest = ""
|
||||||
for bound, txt in descs.items():
|
for bound, txt in descs.items():
|
||||||
if bound >= value:
|
highest = txt
|
||||||
|
if value <= bound:
|
||||||
return txt
|
return txt
|
||||||
|
# if we get here we are above the highest bound so
|
||||||
|
# we return the latest bound specified.
|
||||||
|
return highest
|
||||||
|
|
||||||
|
|
||||||
class GaugeTrait(CounterTrait):
|
class GaugeTrait(CounterTrait):
|
||||||
|
|
@ -1249,7 +1255,7 @@ class GaugeTrait(CounterTrait):
|
||||||
del self.current
|
del self.current
|
||||||
|
|
||||||
|
|
||||||
class SequenceTrait(CounterTrait)
|
class SequenceTrait(CounterTrait):
|
||||||
"""
|
"""
|
||||||
A trait that stores an indexed array of strings to
|
A trait that stores an indexed array of strings to
|
||||||
represent distinct values in a sequence. Adding to the trait will
|
represent distinct values in a sequence. Adding to the trait will
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue