mirror of
https://github.com/evennia/evennia.git
synced 2026-03-28 10:37:16 +01:00
Add desc-support to traits
This commit is contained in:
parent
cf1671b49c
commit
439d2f919c
2 changed files with 62 additions and 22 deletions
|
|
@ -403,8 +403,8 @@ class TestTraitCounter(_TraitHandlerBase):
|
|||
descs={
|
||||
0: "range0",
|
||||
2: "range1",
|
||||
5: "range3",
|
||||
7: "range4",
|
||||
5: "range2",
|
||||
7: "range3",
|
||||
}
|
||||
)
|
||||
self.trait = self.traithandler.get("test1")
|
||||
|
|
@ -424,14 +424,14 @@ class TestTraitCounter(_TraitHandlerBase):
|
|||
"min": 0,
|
||||
"max": 10,
|
||||
"extra_val1": "xvalue1",
|
||||
"extra_val2": "xvalue2"
|
||||
},
|
||||
"descs": {
|
||||
"extra_val2": "xvalue2",
|
||||
"descs": {
|
||||
0: "range0",
|
||||
2: "range1",
|
||||
5: "range3",
|
||||
7: "range4",
|
||||
}
|
||||
5: "range2",
|
||||
7: "range3",
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
def test_actual(self):
|
||||
|
|
@ -549,19 +549,23 @@ class TestTraitCounter(_TraitHandlerBase):
|
|||
|
||||
def test_descs(self):
|
||||
"""Test descriptions"""
|
||||
self.trait.min = -5
|
||||
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.current = 1
|
||||
self.trait.current = 0
|
||||
self.assertEqual(self.trait.desc(), "range0")
|
||||
self.current = 3
|
||||
self.trait.current = 1
|
||||
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.current = 9
|
||||
self.assertEqual(self.trait.desc(), "range4")
|
||||
self.current = 100
|
||||
self.assertEqual(self.trait.desc(), "range4")
|
||||
|
||||
|
||||
class TestTraitGauge(_TraitHandlerBase):
|
||||
|
|
@ -575,7 +579,13 @@ class TestTraitGauge(_TraitHandlerBase):
|
|||
base=8, # max = base + mod
|
||||
mod=2,
|
||||
extra_val1="xvalue1",
|
||||
extra_val2="xvalue2"
|
||||
extra_val2="xvalue2",
|
||||
descs={
|
||||
0: "range0",
|
||||
2: "range1",
|
||||
5: "range2",
|
||||
7: "range3",
|
||||
}
|
||||
)
|
||||
self.trait = self.traithandler.get("test1")
|
||||
|
||||
|
|
@ -594,7 +604,12 @@ class TestTraitGauge(_TraitHandlerBase):
|
|||
"min": 0,
|
||||
"extra_val1": "xvalue1",
|
||||
"extra_val2": "xvalue2",
|
||||
"descs": None
|
||||
"descs": {
|
||||
0: "range0",
|
||||
2: "range1",
|
||||
5: "range2",
|
||||
7: "range3",
|
||||
}
|
||||
}
|
||||
)
|
||||
def test_actual(self):
|
||||
|
|
@ -717,6 +732,25 @@ class TestTraitGauge(_TraitHandlerBase):
|
|||
self.trait.mod -= 1
|
||||
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):
|
||||
"""Test case for numeric magic method implementations."""
|
||||
|
|
|
|||
|
|
@ -957,7 +957,7 @@ class CounterTrait(NumericTrait):
|
|||
"mod": 0,
|
||||
"min": None,
|
||||
"max": None,
|
||||
"descs": None:
|
||||
"descs": None,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
|
|
@ -1087,7 +1087,8 @@ class CounterTrait(NumericTrait):
|
|||
Retrieve descriptions of the current value, if available.
|
||||
|
||||
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
|
||||
describe the interval.
|
||||
|
||||
|
|
@ -1100,9 +1101,14 @@ class CounterTrait(NumericTrait):
|
|||
return ""
|
||||
value = self.actual
|
||||
# we rely on Python3.7+ dicts retaining ordering
|
||||
highest = ""
|
||||
for bound, txt in descs.items():
|
||||
if bound >= value:
|
||||
highest = txt
|
||||
if value <= bound:
|
||||
return txt
|
||||
# if we get here we are above the highest bound so
|
||||
# we return the latest bound specified.
|
||||
return highest
|
||||
|
||||
|
||||
class GaugeTrait(CounterTrait):
|
||||
|
|
@ -1249,7 +1255,7 @@ class GaugeTrait(CounterTrait):
|
|||
del self.current
|
||||
|
||||
|
||||
class SequenceTrait(CounterTrait)
|
||||
class SequenceTrait(CounterTrait):
|
||||
"""
|
||||
A trait that stores an indexed array of strings to
|
||||
represent distinct values in a sequence. Adding to the trait will
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue