def test_attribute_access(self): from oop_challenge import SuperDictionary a = random.choice(string.ascii_letters) + secrets.token_hex(2) with self.assertRaises(AttributeError): o = SuperDictionary() getattr(o, a) with self.assertRaises(KeyError): o = SuperDictionary() o[a]
def test_data_integrity_on_instance(self): from oop_challenge import SuperDictionary random.seed() d = SuperDictionary() key = random.choice(string.ascii_letters) + secrets.token_hex(4) data = secrets.token_hex(5) d[key] = data self.assertEqual(d[key], data) self.assertEqual(getattr(d, key), data) for i in range(1000): d[random.choice(string.ascii_letters) + secrets.token_hex(4)] = secrets.token_hex(5) self.assertEqual(d[key], data) self.assertEqual(getattr(d, key), data) d[key] = secrets.token_hex(6) self.assertNotEqual(d[key], data) self.assertNotEqual(getattr(d, key), data) del d[key] with self.assertRaises(KeyError): d[key] with self.assertRaises(AttributeError): getattr(d, key)
def test_access_on_instance(self): from oop_challenge import SuperDictionary d = SuperDictionary() with self.assertRaises(KeyError): d[random.choice(string.ascii_letters) + secrets.token_hex(2)] with self.assertRaises(AttributeError): getattr(d, random.choice(string.ascii_letters) + secrets.token_hex(2))
def test_attribute_assignment_on_instance(self): from oop_challenge import SuperDictionary k = random.choice(string.ascii_letters) + secrets.token_hex(2) v = secrets.token_hex(4) d = SuperDictionary() setattr(d, k, v) self.assertEqual(v, getattr(d, k)) self.assertEqual(v, d[k])
def test_data_integrity_overall(self): from oop_challenge import SuperDictionary random.seed() key = random.choice(string.ascii_letters) + secrets.token_hex(4) value = secrets.token_hex(4) SuperDictionary[key] = value self.assertEqual(value, SuperDictionary[key]) self.assertEqual(value, SuperDictionary()[key]) self.assertEqual(value, getattr(SuperDictionary, key)) self.assertEqual(value, getattr(SuperDictionary(), key)) key = random.choice(string.ascii_letters) + secrets.token_hex(4) value = secrets.token_hex(4) SuperDictionary()[key] = value self.assertEqual(value, SuperDictionary[key]) self.assertEqual(value, SuperDictionary()[key]) self.assertEqual(value, getattr(SuperDictionary, key)) self.assertEqual(value, getattr(SuperDictionary(), key)) key = random.choice(string.ascii_letters) + secrets.token_hex(4) value = secrets.token_hex(4) setattr(SuperDictionary, key, value) self.assertEqual(value, SuperDictionary[key]) self.assertEqual(value, SuperDictionary()[key]) self.assertEqual(value, getattr(SuperDictionary, key)) self.assertEqual(value, getattr(SuperDictionary(), key)) key = random.choice(string.ascii_letters) + secrets.token_hex(4) value = secrets.token_hex(4) setattr(SuperDictionary(), key, value) self.assertEqual(value, SuperDictionary[key]) self.assertEqual(value, SuperDictionary()[key]) self.assertEqual(value, getattr(SuperDictionary, key)) self.assertEqual(value, getattr(SuperDictionary(), key)) key = random.choice(string.ascii_letters) + secrets.token_hex(4) value = secrets.token_hex(4) setattr(SuperDictionary(), key, value) self.assertEqual(value, SuperDictionary[key]) self.assertEqual(value, SuperDictionary()[key]) self.assertEqual(value, getattr(SuperDictionary, key)) self.assertEqual(value, getattr(SuperDictionary(), key)) del SuperDictionary[key] with self.assertRaises(AttributeError): getattr(SuperDictionary, key) with self.assertRaises(AttributeError): getattr(SuperDictionary(), key) with self.assertRaises(KeyError): SuperDictionary[key] with self.assertRaises(KeyError): SuperDictionary()[key] key = random.choice(string.ascii_letters) + secrets.token_hex(4) value = secrets.token_hex(4) setattr(SuperDictionary, key, value) self.assertEqual(value, SuperDictionary[key]) self.assertEqual(value, SuperDictionary()[key]) self.assertEqual(value, getattr(SuperDictionary, key)) self.assertEqual(value, getattr(SuperDictionary(), key)) del SuperDictionary()[key] with self.assertRaises(AttributeError): getattr(SuperDictionary, key) with self.assertRaises(AttributeError): getattr(SuperDictionary(), key) with self.assertRaises(KeyError): SuperDictionary[key] with self.assertRaises(KeyError): SuperDictionary()[key]
def test_deletion_on_instance(self): from oop_challenge import SuperDictionary d = SuperDictionary() with self.assertRaises(KeyError): del d[random.choice(string.ascii_letters) + secrets.token_hex(2)]
def test_insertion_on_instance(self): from oop_challenge import SuperDictionary d = SuperDictionary() d[random.choice(string.ascii_letters) + secrets.token_hex(2)] = secrets.token_hex(2)
def test_identity(self): from oop_challenge import SuperDictionary self.assertIs(SuperDictionary(), SuperDictionary()) self.assertIs(type(SuperDictionary()), SuperDictionary)
def setUp(self): from oop_challenge import SuperDictionary try: SuperDictionary() except ChallengeNotAttempted: self.skipTest("Challenge 8 not attempted")