Index: third_party/gsutil/third_party/pyasn1/test/type/test_constraint.py |
diff --git a/third_party/gsutil/third_party/pyasn1/test/type/test_constraint.py b/third_party/gsutil/third_party/pyasn1/test/type/test_constraint.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3457c0fc375f82655c25b9c0fc6e46ec7155254a |
--- /dev/null |
+++ b/third_party/gsutil/third_party/pyasn1/test/type/test_constraint.py |
@@ -0,0 +1,280 @@ |
+from pyasn1.type import constraint, error |
+from pyasn1.error import PyAsn1Error |
+from sys import version_info |
+if version_info[0:2] < (2, 7) or \ |
+ version_info[0:2] in ( (3, 0), (3, 1) ): |
+ try: |
+ import unittest2 as unittest |
+ except ImportError: |
+ import unittest |
+else: |
+ import unittest |
+ |
+class SingleValueConstraintTestCase(unittest.TestCase): |
+ def setUp(self): |
+ self.c1 = constraint.SingleValueConstraint(1,2) |
+ self.c2 = constraint.SingleValueConstraint(3,4) |
+ |
+ def testCmp(self): assert self.c1 == self.c1, 'comparation fails' |
+ def testHash(self): assert hash(self.c1) != hash(self.c2), 'hash() fails' |
+ def testGoodVal(self): |
+ try: |
+ self.c1(1) |
+ except error.ValueConstraintError: |
+ assert 0, 'constraint check fails' |
+ def testBadVal(self): |
+ try: |
+ self.c1(4) |
+ except error.ValueConstraintError: |
+ pass |
+ else: |
+ assert 0, 'constraint check fails' |
+ |
+class ContainedSubtypeConstraintTestCase(unittest.TestCase): |
+ def setUp(self): |
+ self.c1 = constraint.ContainedSubtypeConstraint( |
+ constraint.SingleValueConstraint(12) |
+ ) |
+ |
+ def testGoodVal(self): |
+ try: |
+ self.c1(12) |
+ except error.ValueConstraintError: |
+ assert 0, 'constraint check fails' |
+ def testBadVal(self): |
+ try: |
+ self.c1(4) |
+ except error.ValueConstraintError: |
+ pass |
+ else: |
+ assert 0, 'constraint check fails' |
+ |
+class ValueRangeConstraintTestCase(unittest.TestCase): |
+ def setUp(self): |
+ self.c1 = constraint.ValueRangeConstraint(1,4) |
+ |
+ def testGoodVal(self): |
+ try: |
+ self.c1(1) |
+ except error.ValueConstraintError: |
+ assert 0, 'constraint check fails' |
+ def testBadVal(self): |
+ try: |
+ self.c1(-5) |
+ except error.ValueConstraintError: |
+ pass |
+ else: |
+ assert 0, 'constraint check fails' |
+ |
+class ValueSizeConstraintTestCase(unittest.TestCase): |
+ def setUp(self): |
+ self.c1 = constraint.ValueSizeConstraint(1,2) |
+ |
+ def testGoodVal(self): |
+ try: |
+ self.c1('a') |
+ except error.ValueConstraintError: |
+ assert 0, 'constraint check fails' |
+ def testBadVal(self): |
+ try: |
+ self.c1('abc') |
+ except error.ValueConstraintError: |
+ pass |
+ else: |
+ assert 0, 'constraint check fails' |
+ |
+class PermittedAlphabetConstraintTestCase(SingleValueConstraintTestCase): |
+ def setUp(self): |
+ self.c1 = constraint.PermittedAlphabetConstraint('A', 'B', 'C') |
+ self.c2 = constraint.PermittedAlphabetConstraint('DEF') |
+ |
+ def testGoodVal(self): |
+ try: |
+ self.c1('A') |
+ except error.ValueConstraintError: |
+ assert 0, 'constraint check fails' |
+ def testBadVal(self): |
+ try: |
+ self.c1('E') |
+ except error.ValueConstraintError: |
+ pass |
+ else: |
+ assert 0, 'constraint check fails' |
+ |
+class ConstraintsIntersectionTestCase(unittest.TestCase): |
+ def setUp(self): |
+ self.c1 = constraint.ConstraintsIntersection( |
+ constraint.SingleValueConstraint(4), |
+ constraint.ValueRangeConstraint(2, 4) |
+ ) |
+ |
+ def testCmp1(self): |
+ assert constraint.SingleValueConstraint(4) in self.c1, '__cmp__() fails' |
+ |
+ def testCmp2(self): |
+ assert constraint.SingleValueConstraint(5) not in self.c1, \ |
+ '__cmp__() fails' |
+ |
+ def testCmp3(self): |
+ c = constraint.ConstraintsUnion(constraint.ConstraintsIntersection( |
+ constraint.SingleValueConstraint(4), |
+ constraint.ValueRangeConstraint(2, 4) |
+ )) |
+ assert self.c1 in c, '__cmp__() fails' |
+ def testCmp4(self): |
+ c = constraint.ConstraintsUnion( |
+ constraint.ConstraintsIntersection(constraint.SingleValueConstraint(5)) |
+ ) |
+ assert self.c1 not in c, '__cmp__() fails' |
+ |
+ def testGoodVal(self): |
+ try: |
+ self.c1(4) |
+ except error.ValueConstraintError: |
+ assert 0, 'constraint check fails' |
+ def testBadVal(self): |
+ try: |
+ self.c1(-5) |
+ except error.ValueConstraintError: |
+ pass |
+ else: |
+ assert 0, 'constraint check fails' |
+ |
+class InnerTypeConstraintTestCase(unittest.TestCase): |
+ def testConst1(self): |
+ c = constraint.InnerTypeConstraint( |
+ constraint.SingleValueConstraint(4) |
+ ) |
+ try: |
+ c(4, 32) |
+ except error.ValueConstraintError: |
+ assert 0, 'constraint check fails' |
+ try: |
+ c(5, 32) |
+ except error.ValueConstraintError: |
+ pass |
+ else: |
+ assert 0, 'constraint check fails' |
+ def testConst2(self): |
+ c = constraint.InnerTypeConstraint( |
+ (0, constraint.SingleValueConstraint(4), 'PRESENT'), |
+ (1, constraint.SingleValueConstraint(4), 'ABSENT') |
+ ) |
+ try: |
+ c(4, 0) |
+ except error.ValueConstraintError: |
+ raise |
+ assert 0, 'constraint check fails' |
+ try: |
+ c(4, 1) |
+ except error.ValueConstraintError: |
+ pass |
+ else: |
+ assert 0, 'constraint check fails' |
+ try: |
+ c(3, 0) |
+ except error.ValueConstraintError: |
+ pass |
+ else: |
+ assert 0, 'constraint check fails' |
+ |
+# Constraints compositions |
+ |
+class ConstraintsIntersectionTestCase(unittest.TestCase): |
+ def setUp(self): |
+ self.c1 = constraint.ConstraintsIntersection( |
+ constraint.ValueRangeConstraint(1, 9), |
+ constraint.ValueRangeConstraint(2, 5) |
+ ) |
+ |
+ def testGoodVal(self): |
+ try: |
+ self.c1(3) |
+ except error.ValueConstraintError: |
+ assert 0, 'constraint check fails' |
+ def testBadVal(self): |
+ try: |
+ self.c1(0) |
+ except error.ValueConstraintError: |
+ pass |
+ else: |
+ assert 0, 'constraint check fails' |
+ |
+class ConstraintsUnionTestCase(unittest.TestCase): |
+ def setUp(self): |
+ self.c1 = constraint.ConstraintsUnion( |
+ constraint.SingleValueConstraint(5), |
+ constraint.ValueRangeConstraint(1, 3) |
+ ) |
+ |
+ def testGoodVal(self): |
+ try: |
+ self.c1(2) |
+ self.c1(5) |
+ except error.ValueConstraintError: |
+ assert 0, 'constraint check fails' |
+ def testBadVal(self): |
+ try: |
+ self.c1(-5) |
+ except error.ValueConstraintError: |
+ pass |
+ else: |
+ assert 0, 'constraint check fails' |
+ |
+class ConstraintsExclusionTestCase(unittest.TestCase): |
+ def setUp(self): |
+ self.c1 = constraint.ConstraintsExclusion( |
+ constraint.ValueRangeConstraint(2, 4) |
+ ) |
+ |
+ def testGoodVal(self): |
+ try: |
+ self.c1(6) |
+ except error.ValueConstraintError: |
+ assert 0, 'constraint check fails' |
+ def testBadVal(self): |
+ try: |
+ self.c1(2) |
+ except error.ValueConstraintError: |
+ pass |
+ else: |
+ assert 0, 'constraint check fails' |
+ |
+# Constraints derivations |
+ |
+class DirectDerivationTestCase(unittest.TestCase): |
+ def setUp(self): |
+ self.c1 = constraint.SingleValueConstraint(5) |
+ self.c2 = constraint.ConstraintsUnion( |
+ self.c1, constraint.ValueRangeConstraint(1, 3) |
+ ) |
+ |
+ def testGoodVal(self): |
+ assert self.c1.isSuperTypeOf(self.c2), 'isSuperTypeOf failed' |
+ assert not self.c1.isSubTypeOf(self.c2) , 'isSubTypeOf failed' |
+ def testBadVal(self): |
+ assert not self.c2.isSuperTypeOf(self.c1) , 'isSuperTypeOf failed' |
+ assert self.c2.isSubTypeOf(self.c1) , 'isSubTypeOf failed' |
+ |
+class IndirectDerivationTestCase(unittest.TestCase): |
+ def setUp(self): |
+ self.c1 = constraint.ConstraintsIntersection( |
+ constraint.ValueRangeConstraint(1, 30) |
+ ) |
+ self.c2 = constraint.ConstraintsIntersection( |
+ self.c1, constraint.ValueRangeConstraint(1, 20) |
+ ) |
+ self.c2 = constraint.ConstraintsIntersection( |
+ self.c2, constraint.ValueRangeConstraint(1, 10) |
+ ) |
+ |
+ def testGoodVal(self): |
+ assert self.c1.isSuperTypeOf(self.c2), 'isSuperTypeOf failed' |
+ assert not self.c1.isSubTypeOf(self.c2) , 'isSubTypeOf failed' |
+ def testBadVal(self): |
+ assert not self.c2.isSuperTypeOf(self.c1) , 'isSuperTypeOf failed' |
+ assert self.c2.isSubTypeOf(self.c1) , 'isSubTypeOf failed' |
+ |
+if __name__ == '__main__': unittest.main() |
+ |
+# how to apply size constriants to constructed types? |