|
@@ -160,7 +160,8 @@ class BitFieldTest(TestCase):
|
|
cursor = connection.cursor()
|
|
cursor = connection.cursor()
|
|
flags_field = BitFieldTestModel._meta.get_field('flags')
|
|
flags_field = BitFieldTestModel._meta.get_field('flags')
|
|
flags_db_column = flags_field.db_column or flags_field.name
|
|
flags_db_column = flags_field.db_column or flags_field.name
|
|
- cursor.execute("INSERT INTO %s (%s) VALUES (-1)" % (BitFieldTestModel._meta.db_table, flags_db_column))
|
|
|
|
|
|
+ cursor.execute("INSERT INTO %s (%s) VALUES (-1)" %
|
|
|
|
+ (BitFieldTestModel._meta.db_table, flags_db_column))
|
|
# There should only be the one row we inserted through the cursor.
|
|
# There should only be the one row we inserted through the cursor.
|
|
instance = BitFieldTestModel.objects.get(flags=-1)
|
|
instance = BitFieldTestModel.objects.get(flags=-1)
|
|
self.assertTrue(instance.flags.FLAG_0)
|
|
self.assertTrue(instance.flags.FLAG_0)
|
|
@@ -174,27 +175,44 @@ class BitFieldTest(TestCase):
|
|
|
|
|
|
def test_select(self):
|
|
def test_select(self):
|
|
BitFieldTestModel.objects.create(flags=3)
|
|
BitFieldTestModel.objects.create(flags=3)
|
|
- self.assertTrue(BitFieldTestModel.objects.filter(flags=BitFieldTestModel.flags.FLAG_1).exists())
|
|
|
|
- self.assertTrue(BitFieldTestModel.objects.filter(flags=BitFieldTestModel.flags.FLAG_0).exists())
|
|
|
|
- self.assertFalse(BitFieldTestModel.objects.exclude(flags=BitFieldTestModel.flags.FLAG_0).exists())
|
|
|
|
- self.assertFalse(BitFieldTestModel.objects.exclude(flags=BitFieldTestModel.flags.FLAG_1).exists())
|
|
|
|
|
|
+ self.assertTrue(BitFieldTestModel.objects.filter(
|
|
|
|
+ flags=BitFieldTestModel.flags.FLAG_1).exists())
|
|
|
|
+ self.assertTrue(BitFieldTestModel.objects.filter(
|
|
|
|
+ flags=BitFieldTestModel.flags.FLAG_0).exists())
|
|
|
|
+ self.assertFalse(BitFieldTestModel.objects.exclude(
|
|
|
|
+ flags=BitFieldTestModel.flags.FLAG_0).exists())
|
|
|
|
+ self.assertFalse(BitFieldTestModel.objects.exclude(
|
|
|
|
+ flags=BitFieldTestModel.flags.FLAG_1).exists())
|
|
|
|
|
|
def test_update(self):
|
|
def test_update(self):
|
|
instance = BitFieldTestModel.objects.create(flags=0)
|
|
instance = BitFieldTestModel.objects.create(flags=0)
|
|
self.assertFalse(instance.flags.FLAG_0)
|
|
self.assertFalse(instance.flags.FLAG_0)
|
|
|
|
|
|
- BitFieldTestModel.objects.filter(pk=instance.pk).update(flags=bitor(F('flags'), BitFieldTestModel.flags.FLAG_1))
|
|
|
|
|
|
+ BitFieldTestModel.objects.filter(
|
|
|
|
+ pk=instance.pk).update(
|
|
|
|
+ flags=bitor(
|
|
|
|
+ F('flags'),
|
|
|
|
+ BitFieldTestModel.flags.FLAG_1))
|
|
instance = BitFieldTestModel.objects.get(pk=instance.pk)
|
|
instance = BitFieldTestModel.objects.get(pk=instance.pk)
|
|
self.assertTrue(instance.flags.FLAG_1)
|
|
self.assertTrue(instance.flags.FLAG_1)
|
|
|
|
|
|
- BitFieldTestModel.objects.filter(pk=instance.pk).update(flags=bitor(F('flags'), ((~BitFieldTestModel.flags.FLAG_0 | BitFieldTestModel.flags.FLAG_3))))
|
|
|
|
|
|
+ BitFieldTestModel.objects.filter(
|
|
|
|
+ pk=instance.pk).update(
|
|
|
|
+ flags=bitor(
|
|
|
|
+ F('flags'),
|
|
|
|
+ ((~BitFieldTestModel.flags.FLAG_0 | BitFieldTestModel.flags.FLAG_3))))
|
|
instance = BitFieldTestModel.objects.get(pk=instance.pk)
|
|
instance = BitFieldTestModel.objects.get(pk=instance.pk)
|
|
self.assertFalse(instance.flags.FLAG_0)
|
|
self.assertFalse(instance.flags.FLAG_0)
|
|
self.assertTrue(instance.flags.FLAG_1)
|
|
self.assertTrue(instance.flags.FLAG_1)
|
|
self.assertTrue(instance.flags.FLAG_3)
|
|
self.assertTrue(instance.flags.FLAG_3)
|
|
- self.assertFalse(BitFieldTestModel.objects.filter(flags=BitFieldTestModel.flags.FLAG_0).exists())
|
|
|
|
-
|
|
|
|
- BitFieldTestModel.objects.filter(pk=instance.pk).update(flags=bitand(F('flags'), ~BitFieldTestModel.flags.FLAG_3))
|
|
|
|
|
|
+ self.assertFalse(BitFieldTestModel.objects.filter(
|
|
|
|
+ flags=BitFieldTestModel.flags.FLAG_0).exists())
|
|
|
|
+
|
|
|
|
+ BitFieldTestModel.objects.filter(
|
|
|
|
+ pk=instance.pk).update(
|
|
|
|
+ flags=bitand(
|
|
|
|
+ F('flags'),
|
|
|
|
+ ~BitFieldTestModel.flags.FLAG_3))
|
|
instance = BitFieldTestModel.objects.get(pk=instance.pk)
|
|
instance = BitFieldTestModel.objects.get(pk=instance.pk)
|
|
self.assertFalse(instance.flags.FLAG_0)
|
|
self.assertFalse(instance.flags.FLAG_0)
|
|
self.assertTrue(instance.flags.FLAG_1)
|
|
self.assertTrue(instance.flags.FLAG_1)
|
|
@@ -206,16 +224,24 @@ class BitFieldTest(TestCase):
|
|
|
|
|
|
instance.flags.FLAG_1 = True
|
|
instance.flags.FLAG_1 = True
|
|
|
|
|
|
- BitFieldTestModel.objects.filter(pk=instance.pk).update(flags=bitor(F('flags'), instance.flags))
|
|
|
|
|
|
+ BitFieldTestModel.objects.filter(
|
|
|
|
+ pk=instance.pk).update(
|
|
|
|
+ flags=bitor(
|
|
|
|
+ F('flags'),
|
|
|
|
+ instance.flags))
|
|
instance = BitFieldTestModel.objects.get(pk=instance.pk)
|
|
instance = BitFieldTestModel.objects.get(pk=instance.pk)
|
|
self.assertTrue(instance.flags.FLAG_1)
|
|
self.assertTrue(instance.flags.FLAG_1)
|
|
|
|
|
|
def test_negate(self):
|
|
def test_negate(self):
|
|
- BitFieldTestModel.objects.create(flags=BitFieldTestModel.flags.FLAG_0 | BitFieldTestModel.flags.FLAG_1)
|
|
|
|
|
|
+ BitFieldTestModel.objects.create(
|
|
|
|
+ flags=BitFieldTestModel.flags.FLAG_0 | BitFieldTestModel.flags.FLAG_1)
|
|
BitFieldTestModel.objects.create(flags=BitFieldTestModel.flags.FLAG_1)
|
|
BitFieldTestModel.objects.create(flags=BitFieldTestModel.flags.FLAG_1)
|
|
- self.assertEqual(BitFieldTestModel.objects.filter(flags=~BitFieldTestModel.flags.FLAG_0).count(), 1)
|
|
|
|
- self.assertEqual(BitFieldTestModel.objects.filter(flags=~BitFieldTestModel.flags.FLAG_1).count(), 0)
|
|
|
|
- self.assertEqual(BitFieldTestModel.objects.filter(flags=~BitFieldTestModel.flags.FLAG_2).count(), 2)
|
|
|
|
|
|
+ self.assertEqual(BitFieldTestModel.objects.filter(
|
|
|
|
+ flags=~BitFieldTestModel.flags.FLAG_0).count(), 1)
|
|
|
|
+ self.assertEqual(BitFieldTestModel.objects.filter(
|
|
|
|
+ flags=~BitFieldTestModel.flags.FLAG_1).count(), 0)
|
|
|
|
+ self.assertEqual(BitFieldTestModel.objects.filter(
|
|
|
|
+ flags=~BitFieldTestModel.flags.FLAG_2).count(), 2)
|
|
|
|
|
|
def test_default_value(self):
|
|
def test_default_value(self):
|
|
instance = BitFieldTestModel.objects.create()
|
|
instance = BitFieldTestModel.objects.create()
|
|
@@ -257,7 +283,8 @@ class BitFieldTest(TestCase):
|
|
except ValueError:
|
|
except ValueError:
|
|
self.fail("It should work well with these flags")
|
|
self.fail("It should work well with these flags")
|
|
|
|
|
|
- self.assertEquals(bf.flags, ['zero', 'first', 'second', '', '', '', '', '', '', '', 'tenth'])
|
|
|
|
|
|
+ self.assertEquals(bf.flags, ['zero', 'first', 'second',
|
|
|
|
+ '', '', '', '', '', '', '', 'tenth'])
|
|
self.assertRaises(ValueError, BitField, flags={})
|
|
self.assertRaises(ValueError, BitField, flags={})
|
|
self.assertRaises(ValueError, BitField, flags={'wrongkey': 'wrongkey'})
|
|
self.assertRaises(ValueError, BitField, flags={'wrongkey': 'wrongkey'})
|
|
self.assertRaises(ValueError, BitField, flags={'1': 'non_int_key'})
|
|
self.assertRaises(ValueError, BitField, flags={'1': 'non_int_key'})
|
|
@@ -333,9 +360,9 @@ class CompositeBitFieldTest(TestCase):
|
|
def test_hasattr(self):
|
|
def test_hasattr(self):
|
|
inst = CompositeBitFieldTestModel()
|
|
inst = CompositeBitFieldTestModel()
|
|
self.assertEqual(hasattr(inst.flags, 'flag_0'),
|
|
self.assertEqual(hasattr(inst.flags, 'flag_0'),
|
|
- hasattr(inst.flags_1, 'flag_0'))
|
|
|
|
|
|
+ hasattr(inst.flags_1, 'flag_0'))
|
|
self.assertEqual(hasattr(inst.flags, 'flag_4'),
|
|
self.assertEqual(hasattr(inst.flags, 'flag_4'),
|
|
- hasattr(inst.flags_2, 'flag_4'))
|
|
|
|
|
|
+ hasattr(inst.flags_2, 'flag_4'))
|
|
|
|
|
|
|
|
|
|
class BitFormFieldTest(TestCase):
|
|
class BitFormFieldTest(TestCase):
|