@given(binary())
def test_impl_inherited(self, impl_tag):
class Inherited(self.base_klass):
- __slots__ = ()
impl = impl_tag
obj = Inherited()
self.assertSequenceEqual(obj.impl, impl_tag)
@given(binary())
def test_expl_inherited(self, expl_tag):
class Inherited(self.base_klass):
- __slots__ = ()
expl = expl_tag
obj = Inherited()
self.assertSequenceEqual(obj.expl, expl_tag)
class BooleanInherited(Boolean):
- __slots__ = ()
+ pass
class TestBoolean(CommonMixin, TestCase):
class IntegerInherited(Integer):
- __slots__ = ()
+ pass
class TestInteger(CommonMixin, TestCase):
missing = names_input.pop()
class Int(Integer):
- __slots__ = ()
schema = [(n, 123) for n in names_input]
with self.assertRaises(ObjUnknown) as err:
Int(missing)
@given(sets(text_letters(), min_size=2))
def test_known_name(self, names_input):
class Int(Integer):
- __slots__ = ()
schema = [(n, 123) for n in names_input]
Int(names_input.pop())
names_input = dict(zip(names_input, values_input))
class Int(Integer):
- __slots__ = ()
schema = names_input
_int = Int(chosen_name)
self.assertEqual(_int.named, chosen_name)
class BitStringInherited(BitString):
- __slots__ = ()
+ pass
class TestBitString(CommonMixin, TestCase):
self.assertGreater(len(obj.encode()), (leading_zeros + 1 + trailing_zeros) // 8)
class BS(BitString):
- __slots__ = ()
schema = (("whatever", 0),)
obj = BS("'%s1%s'B" % (("0" * leading_zeros), ("0" * trailing_zeros)))
self.assertEqual(obj.bit_len, leading_zeros + 1)
missing = _schema.pop()
class BS(BitString):
- __slots__ = ()
schema = [(n, i) for i, n in enumerate(_schema)]
with self.assertRaises(ObjUnknown) as err:
BS((missing,))
) = d.draw(bit_string_values_strat())
class BS(klass):
- __slots__ = ()
schema = schema_initial
obj_initial = BS(
value=value_initial,
_schema, value, impl, expl, default, optional, _decoded = values
class BS(klass):
- __slots__ = ()
schema = _schema
obj = BS(
value=value,
offset = d.draw(integers(min_value=0))
for klass in (BitString, BitStringInherited):
class BS(klass):
- __slots__ = ()
schema = _schema
obj = BS(
value=value,
class OctetStringInherited(OctetString):
- __slots__ = ()
+ pass
class TestOctetString(CommonMixin, TestCase):
class NullInherited(Null):
- __slots__ = ()
+ pass
class TestNull(CommonMixin, TestCase):
class ObjectIdentifierInherited(ObjectIdentifier):
- __slots__ = ()
+ pass
class TestObjectIdentifier(CommonMixin, TestCase):
class TestEnumerated(CommonMixin, TestCase):
class EWhatever(Enumerated):
- __slots__ = ()
schema = (("whatever", 0),)
base_klass = EWhatever
missing = schema_input.pop()
class E(Enumerated):
- __slots__ = ()
schema = [(n, 123) for n in schema_input]
with self.assertRaises(ObjUnknown) as err:
E(missing)
_input = list(zip(schema_input, values_input))
class E(Enumerated):
- __slots__ = ()
schema = _input
with self.assertRaises(DecodeError) as err:
E(missing_value)
@given(integers(), integers(), binary(), binary())
def test_comparison(self, value1, value2, tag1, tag2):
class E(Enumerated):
- __slots__ = ()
schema = (
("whatever0", value1),
("whatever1", value2),
)
class EInherited(E):
- __slots__ = ()
+ pass
for klass in (E, EInherited):
obj1 = klass(value1)
obj2 = klass(value2)
) = d.draw(enumerated_values_strat())
class E(Enumerated):
- __slots__ = ()
schema = schema_initial
obj_initial = E(
value=value_initial,
schema_input, value, impl, expl, default, optional, _decoded = values
class E(Enumerated):
- __slots__ = ()
schema = schema_input
obj = E(
value=value,
value = d.draw(sampled_from(sorted([v for _, v in schema_input])))
class E(Enumerated):
- __slots__ = ()
schema = schema_input
obj = E(
value=value,
class AnyInherited(Any):
- __slots__ = ()
+ pass
class TestAny(CommonMixin, TestCase):
class ChoiceInherited(Choice):
- __slots__ = ()
+ pass
class TestChoice(CommonMixin, TestCase):
@given(booleans(), booleans())
def test_comparison(self, value1, value2):
class WahlInherited(self.base_klass):
- __slots__ = ()
+ pass
for klass in (self.base_klass, WahlInherited):
obj1 = klass(("whatever", Boolean(value1)))
obj2 = klass(("whatever", Boolean(value2)))
) = d.draw(choice_values_strat())
class Wahl(klass):
- __slots__ = ()
schema = schema_initial
obj_initial = Wahl(
value=value_initial,
_schema, value, expl, default, optional, _decoded = values
class Wahl(self.base_klass):
- __slots__ = ()
schema = _schema
obj = Wahl(
value=value,
offset = d.draw(integers(min_value=0))
class Wahl(self.base_klass):
- __slots__ = ()
schema = _schema
obj = Wahl(
value=value,
for i, (klass, value, default) in enumerate(inputs):
schema.append((names[i], klass(default=default, **inits[i])))
seq_name = draw(text_letters())
- Seq = type(seq_name, (seq_klass,), {"__slots__": (), "schema": tuple(schema)})
+ Seq = type(seq_name, (seq_klass,), {"schema": tuple(schema)})
seq = Seq()
expects = []
for i, (klass, value, default) in enumerate(inputs):
seq(default=(seq if i in defaulted else None), **inits[i]),
))
seq_name = draw(text_letters())
- Seq = type(seq_name, (seq_klass,), {"__slots__": (), "schema": tuple(schema)})
+ Seq = type(seq_name, (seq_klass,), {"schema": tuple(schema)})
seq_outer = Seq()
expect_outers = []
for name, (seq_inner, expects_inner) in zip(names, seq_expectses):
def test_invalid_value_type_set(self):
class Seq(self.base_klass):
- __slots__ = ()
schema = (("whatever", Boolean()),)
seq = Seq()
with self.assertRaises(InvalidValueType) as err:
schema_input.append((name, Boolean()))
class Seq(self.base_klass):
- __slots__ = ()
schema = tuple(schema_input)
seq = Seq()
for name in ready.keys():
@given(data_strategy())
def test_call(self, d):
class SeqInherited(self.base_klass):
- __slots__ = ()
+ pass
for klass in (self.base_klass, SeqInherited):
(
value_initial,
@given(data_strategy())
def test_copy(self, d):
class SeqInherited(self.base_klass):
- __slots__ = ()
+ pass
for klass in (self.base_klass, SeqInherited):
values = d.draw(seq_values_strat(seq_klass=klass))
obj = klass(*values)
tag_impl = tag_encode(d.draw(integers(min_value=1)))
class Seq(self.base_klass):
- __slots__ = ()
impl = tag_impl
schema = (("whatever", Integer()),)
seq = Seq()
tag_expl = tag_ctxc(d.draw(integers(min_value=1)))
class Seq(self.base_klass):
- __slots__ = ()
expl = tag_expl
schema = (("whatever", Integer()),)
seq = Seq()
assume(False)
class Seq(self.base_klass):
- __slots__ = ()
schema = (
("whatever", Integer()),
("junk", Any()),
)).items())
class Seq(self.base_klass):
- __slots__ = ()
schema = [
(n, Integer(default=d))
for n, (_, d) in _schema
))]
class SeqWithoutDefault(self.base_klass):
- __slots__ = ()
schema = [
(n, Integer(impl=t))
for (n, _), t in zip(_schema, tags)
seq_encoded = seq_without_default.encode()
class SeqWithDefault(self.base_klass):
- __slots__ = ()
schema = [
(n, Integer(default=v, impl=t))
for (n, v), t in zip(_schema, tags)
names_tags = [(name, tag) for tag, name in sorted(zip(tags, names))]
class SeqFull(self.base_klass):
- __slots__ = ()
schema = [(n, Integer(impl=t)) for n, t in names_tags]
seq_full = SeqFull()
for i, name in enumerate(names):
altered = names_tags[:-2] + names_tags[-1:]
class SeqMissing(self.base_klass):
- __slots__ = ()
schema = [(n, Integer(impl=t)) for n, t in altered]
seq_missing = SeqMissing()
with self.assertRaises(TagMismatch):
)
def test_remaining(self, value, junk):
class Seq(Sequence):
- __slots__ = ()
schema = (
("whatever", Integer()),
)
missing = names.pop()
class Seq(Sequence):
- __slots__ = ()
schema = [(n, Boolean()) for n in names]
seq = Seq()
with self.assertRaises(ObjUnknown) as err:
]
class Seq(Set):
- __slots__ = ()
schema = [(str(i), OctetString(impl=t)) for i, t in enumerate(tags)]
seq = Seq()
for name, _ in Seq.schema:
def test_invalid_values_type(self):
class SeqOf(self.base_klass):
- __slots__ = ()
schema = Integer()
with self.assertRaises(InvalidValueType) as err:
SeqOf([Integer(123), Boolean(False), Integer(234)])
@given(booleans(), booleans(), binary(), binary())
def test_comparison(self, value1, value2, tag1, tag2):
class SeqOf(self.base_klass):
- __slots__ = ()
schema = Boolean()
obj1 = SeqOf([Boolean(value1)])
obj2 = SeqOf([Boolean(value2)])
@given(lists(booleans()))
def test_iter(self, values):
class SeqOf(self.base_klass):
- __slots__ = ()
schema = Boolean()
obj = SeqOf([Boolean(value) for value in values])
self.assertEqual(len(obj), len(values))
]
class SeqOf(self.base_klass):
- __slots__ = ()
schema = Integer()
values = d.draw(permutations(ready + non_ready))
seqof = SeqOf()
def test_spec_mismatch(self):
class SeqOf(self.base_klass):
- __slots__ = ()
schema = Integer()
seqof = SeqOf()
seqof.append(Integer(123))
@given(data_strategy())
def test_bounds_satisfied(self, d):
class SeqOf(self.base_klass):
- __slots__ = ()
schema = Boolean()
bound_min = d.draw(integers(min_value=0, max_value=1 << 7))
bound_max = d.draw(integers(min_value=bound_min, max_value=1 << 7))
@given(data_strategy())
def test_bounds_unsatisfied(self, d):
class SeqOf(self.base_klass):
- __slots__ = ()
schema = Boolean()
bound_min = d.draw(integers(min_value=1, max_value=1 << 7))
bound_max = d.draw(integers(min_value=bound_min, max_value=1 << 7))
@given(integers(min_value=1, max_value=10))
def test_out_of_bounds(self, bound_max):
class SeqOf(self.base_klass):
- __slots__ = ()
schema = Integer()
bounds = (0, bound_max)
seqof = SeqOf()
) = d.draw(seqof_values_strat())
class SeqOf(self.base_klass):
- __slots__ = ()
schema = schema_initial
obj_initial = SeqOf(
value=value_initial,
_schema, value, bounds, impl, expl, default, optional, _decoded = values
class SeqOf(self.base_klass):
- __slots__ = ()
schema = _schema
obj = SeqOf(
value=value,
)
def test_stripped(self, values, tag_impl):
class SeqOf(self.base_klass):
- __slots__ = ()
schema = OctetString()
obj = SeqOf([OctetString(v) for v in values], impl=tag_impl)
with self.assertRaises(NotEnoughData):
)
def test_stripped_expl(self, values, tag_expl):
class SeqOf(self.base_klass):
- __slots__ = ()
schema = OctetString()
obj = SeqOf([OctetString(v) for v in values], expl=tag_expl)
with self.assertRaises(NotEnoughData):
_, _, _, _, _, default, optional, _decoded = values
class SeqOf(self.base_klass):
- __slots__ = ()
schema = Integer()
obj = SeqOf(
value=value,
class TestSequenceOf(SeqOfMixing, CommonMixin, TestCase):
class SeqOf(SequenceOf):
- __slots__ = ()
schema = "whatever"
base_klass = SeqOf
class TestSetOf(SeqOfMixing, CommonMixin, TestCase):
class SeqOf(SetOf):
- __slots__ = ()
schema = "whatever"
base_klass = SeqOf
values = [OctetString(v) for v in d.draw(lists(binary()))]
class Seq(SetOf):
- __slots__ = ()
schema = OctetString()
seq = Seq(values)
seq_encoded = seq.encode()
self.assertSequenceEqual(Integer(-129).encode(), hexdec("0202ff7f"))
class Seq(Sequence):
- __slots__ = ()
schema = (
("erste", Integer()),
("zweite", Integer(optional=True))
self.assertSequenceEqual(seq.encode(), hexdec("3006020140020141"))
class NestedSeq(Sequence):
- __slots__ = ()
schema = (
("nest", Seq()),
)
)
class Seq(Sequence):
- __slots__ = ()
schema = (
("erste", Integer(impl=tag_encode(5, klass=TagClassContext))),
)
self.assertSequenceEqual(seq.encode(), hexdec("3003850140"))
class Seq(Sequence):
- __slots__ = ()
schema = (
("erste", Integer(expl=tag_ctxc(5))),
)
self.assertSequenceEqual(seq.encode(), hexdec("3005a503020140"))
class Seq(Sequence):
- __slots__ = ()
schema = (
("erste", Null(
impl=tag_encode(0, klass=TagClassContext),
)
class Seq(Sequence):
- __slots__ = ()
schema = (
("erste", GeneralizedTime()),
)
self.assertSequenceEqual(UTF8String("Σ").encode(), hexdec("0c02cea3"))
class Seq(Sequence):
- __slots__ = ()
schema = (
("erste", IA5String()),
)
self.assertSequenceEqual(seq.encode(), hexdec("3006160474657374"))
class Seq(Sequence):
- __slots__ = ()
schema = (
("erste", PrintableString()),
)
self.assertSequenceEqual(seq.encode(), hexdec("30071305746573742a"))
class Seq(Sequence):
- __slots__ = ()
schema = (
("erste", Any(optional=True)),
("zweite", Integer()),
self.assertSequenceEqual(seq.encode(), hexdec("3003020140"))
class Seq(SetOf):
- __slots__ = ()
schema = Integer()
seq = Seq()
seq.append(Integer(10))
self.assertSequenceEqual(seq.encode(), hexdec("310302010a"))
class _SeqOf(SequenceOf):
- __slots__ = ()
schema = PrintableString()
class SeqOf(SequenceOf):
- __slots__ = ()
schema = _SeqOf()
_seqof = _SeqOf()
_seqof.append(PrintableString("1"))
self.assertSequenceEqual(seqof.encode(), hexdec("30053003130131"))
class Seq(Sequence):
- __slots__ = ()
schema = (
("erste", Integer(default=1)),
)
pp = _pp(asn1_type_name=ObjectIdentifier.asn1_type_name, value=chosen)
self.assertNotIn(chosen_id, pp_console_row(pp))
self.assertIn(chosen_id, pp_console_row(pp, oids=oids))
+
+
+class TestAutoAddSlots(TestCase):
+ def runTest(self):
+ class Inher(Integer):
+ pass
+
+ with self.assertRaises(AttributeError):
+ inher = Inher()
+ inher.unexistent = "whatever"