Beispiel #1
0
class DNSQR(Proto):
    name = "DNS Question Record"
    fields = {
        "qname": Field("qname"),
        "qtype": Field("qtype"),
        "qclass": Field("qclass")
    }
Beispiel #2
0
 def test_byte_place_out_of_byte(self):
     # trying to place a field that will not be contained in the current byte
     # should return false and leave the byte unaffected
     b = Byte()
     self.assertFalse(b.place(Field("f3", 4), 11))
     self.assertFalse(b.place(Field("f3", 4), -1))
     self.assertTrue(isinstance(b.fields, list))
     self.assertEqual(len(b.fields), 0)
Beispiel #3
0
class DNSRR(Proto):
    name = "DNS Resource Record"
    fields = {
        "rrname": Field("rrname"),
        "type": Field("type"),
        "ttl": Field("ttl"),
        "rclass": Field("rclass")
    }
Beispiel #4
0
class TCP(Proto):
    name = "TCP"
    fields = {
        "sport": Field("sport"),
        "dport": Field("dport"),
        "seq": Field("seq"),
        "ack": Field("ack"),
        "window": Field("window")
    }
Beispiel #5
0
 def test_marshal(self):
     b = Byte()
     f = Field("test", 4)
     self.assertTrue(f.place(b, 3))
     # for marshalling we need the bytes, not the field
     self.assertRaises(AssertionError, self.cg.marshal, f)
     self.assertEqual(self.cg.marshal(b), "data[ 0] = (pre->test << 0);")
     self.assertTrue(Field("test2", 2).place(b, 5))
     self.assertEqual(self.cg.marshal(b),
                      "data[ 0] = (pre->test2 << 4) | (pre->test << 0);")
Beispiel #6
0
    def test_field_invalid_place(self):
        # try to place Field in single byte, in invalid position
        b1 = Byte()
        self.assertFalse(Field("too_long", 12).place(b1, 7))
        self.assertFalse(Field("overlap_msb", 4).place(b1, 10))
        self.assertFalse(Field("overlap_lsb", 12).place(b1, 2))

        f = Field("test", 4)
        self.assertTrue(f.place(b1, 3))
        # field cannot be placed twice, no matter, what the byte looks like
        b2 = Byte()
        self.assertFalse(f.place(b2, 3))
Beispiel #7
0
 def test_unmarshal(self):
     b0 = Byte(0)
     b1 = Byte(1)
     f0 = Field("test", 4)
     f1 = Field("test2", 8)
     self.assertTrue(f0.place(b1, 3))
     # for unmarshalling we need the field, not the byte
     self.assertRaises(AssertionError, self.cg.unmarshal, b1)
     self.assertEqual(self.cg.unmarshal(f0),
                      "pre->test = ((data[ 1] >> 0) & 0x0f) << 0;")
     self.assertTrue(f1.place([b0, b1], 11))
     self.assertEqual(
         self.cg.unmarshal(f1),
         "pre->test2 = ((data[ 0] >> 0) & 0x0f) << 4 | ((data[ 1] >> 4) & 0x0f) << 0;"
     )
Beispiel #8
0
 def process_fields(self, fields=None):
     for field_def in fields:
         field_name = field_def.get("fieldName")
         if not self.is_duplicate_field_name(field_name):
             raise Exception("Form definition problem : field name issue")
         field = Field(**field_def, form=self)
         self.fields[field_name] = field
     return
Beispiel #9
0
    def func_params(field_node):
        field = Field()

        if field_node.args:
            field['args'] = Resolver.resolve(field_node.args)

        field.update(**Resolver.keywords(field_node.keywords))

        return field
Beispiel #10
0
 def test_multibyte_unmarshal(self):
     bytes = [Byte(ii) for ii in range(0, 5)]
     f = Field("big", 32)
     self.assertTrue(f.place(bytes, (len(bytes) * 8) - 1 - 4))
     self.assertEqual(
         self.cg.unmarshal(f),
         "pre->big = ((data[ 0] >> 0) & 0x0f) << 28 | ((data[ 1] >> 0) & 0xff) << 20"
         +
         " | ((data[ 2] >> 0) & 0xff) << 12 | ((data[ 3] >> 0) & 0xff) << 4"
         + " | ((data[ 4] >> 4) & 0x0f) << 0;")
Beispiel #11
0
 def test_field_place(self):
     f = Field("test", 4)
     # place Field in single byte, msb = f.size - 1 = 3 (=> lsb should be 0)
     b0 = Byte()
     self.assertTrue(f.place(b0, 3))
     # now the field should have all placement information
     self.assertEqual(len(f.bytes), 1)
     self.assertEqual(f.bytes[0], b0)
     self.assertEqual(f.msb, 3)
     self.assertEqual(f.lsb, 0)
Beispiel #12
0
 def test_in_order_placement(self):
     pp = InOrderPlacement()
     f0 = Field("f0", 4)
     f1 = Field("f1", 5)
     f2 = Field("f2", 12)
     f3 = Field("f3", 2)
     f4 = Field("f4", 32)
     fields = [f0, f1, f2, f3, f4]
     bytes = pp.place(fields)
     self.assertEqual(len(bytes), 7)
     self.assertEqual(f0.msb_in_byte(bytes[0]), 7)
     self.assertEqual(f0.lsb_in_byte(bytes[0]), 4)
     self.assertEqual(f1.msb_in_byte(bytes[0]), 3)
     self.assertEqual(f1.lsb_in_byte(bytes[1]), 7)
     self.assertEqual(f2.msb_in_byte(bytes[1]), 6)
     self.assertEqual(f2.lsb_in_byte(bytes[2]), 3)
     self.assertEqual(f3.msb_in_byte(bytes[2]), 2)
     self.assertEqual(f3.lsb_in_byte(bytes[2]), 1)
     self.assertEqual(f4.msb_in_byte(bytes[2]), 0)
     self.assertEqual(f4.lsb_in_byte(bytes[6]), 1)
Beispiel #13
0
 def test_byte_can_place(self):
     b = Byte()
     f0 = Field("f0", 4)
     self.assertTrue(b.can_place(f0, 3))
     # byte remaons unaffected
     self.assertEqual(len(b.fields), 0)
     # field remains unaffected
     self.assertEqual(f0.msb, -1)
     self.assertEqual(f0.lsb, -1)
     self.assertEqual(f0.size, 4)
     self.assertEqual(len(f0.bytes), 0)
Beispiel #14
0
 def test_byte_place_single_field(self):
     b = Byte()
     # place a field with lsb = 0 (=> msb = 3)
     f0 = Field("f0", 4)
     self.assertTrue(b.place(f0, 3))
     self.assertEqual(len(b.fields), 1)
     self.assertEqual(b.fields[0], f0)
     # field remains unaffected
     self.assertEqual(f0.msb, -1)
     self.assertEqual(f0.lsb, -1)
     self.assertEqual(f0.size, 4)
     self.assertEqual(len(f0.bytes), 0)
Beispiel #15
0
    def test_field_place_multiple_bytes(self):
        # place long field in two bytes
        bytes = [Byte(), Byte()]
        f = Field("too_long_for_one_byte", 12)
        self.assertTrue(f.place(bytes, 14))
        self.assertEqual(len(f.bytes), 2)
        self.assertEqual(f.bytes[0], bytes[0])
        self.assertEqual(f.bytes[1], bytes[1])
        # msb and lsb are always relative to the underlying byte list
        self.assertEqual(f.msb, 14)
        self.assertEqual(f.lsb, 3)
        # check that bytes know the fields
        self.assertEqual(len(bytes[0].fields), 1)
        self.assertEqual(len(bytes[1].fields), 1)
        self.assertEqual(bytes[0].fields[0], f)
        self.assertEqual(bytes[1].fields[0], f)
        # check relative positions
        # in bytes[0]: 0FFFFFFF
        self.assertEqual(f.msb_in_byte(bytes[0]), 6)
        self.assertEqual(f.lsb_in_byte(bytes[0]), 0)
        self.assertEqual(f.size_in_byte(bytes[0]), 7)
        # in bytes[1]: FFFFF000
        self.assertEqual(f.msb_in_byte(bytes[1]), 7)
        self.assertEqual(f.lsb_in_byte(bytes[1]), 3)
        self.assertEqual(f.size_in_byte(bytes[1]), 5)

        # place one field in more bytes than needed
        bytes2 = [Byte(), Byte(), Byte()]
        f2 = Field("too_long_for_one_byte", 12)
        self.assertTrue(f2.place(bytes2, 23))
        self.assertEqual(len(f2.bytes), 2)
        self.assertEqual(f2.bytes[0], bytes2[0])
        self.assertEqual(f2.bytes[1], bytes2[1])

        bytes3 = [Byte(), Byte(), Byte()]
        f3 = Field("too_long_for_one_byte", 12)
        self.assertTrue(f3.place(bytes3, 14))
        self.assertEqual(len(f3.bytes), 2)
        self.assertEqual(f3.bytes[0], bytes3[1])
        self.assertEqual(f3.bytes[1], bytes3[2])
Beispiel #16
0
 def test_multibyte_marshal(self):
     bytes = [Byte(ii) for ii in range(0, 5)]
     f = Field("big", 32)
     self.assertTrue(f.place(bytes, (len(bytes) * 8) - 1 - 4))
     self.assertEqual(self.cg.marshal(bytes[0]),
                      "data[ 0] = (pre->big >> 28);")
     self.assertEqual(self.cg.marshal(bytes[1]),
                      "data[ 1] = (pre->big >> 20);")
     self.assertEqual(self.cg.marshal(bytes[2]),
                      "data[ 2] = (pre->big >> 12);")
     self.assertEqual(self.cg.marshal(bytes[3]),
                      "data[ 3] = (pre->big >> 4);")
     self.assertEqual(self.cg.marshal(bytes[4]),
                      "data[ 4] = (pre->big << 4);")
Beispiel #17
0
        def resolve_fields(fields_node, read_only=False):
            fields = []
            known_types = [ast.Tuple, ast.List, ast.Set]

            if isinstance(fields_node, ast.BinOp):
                assert isinstance(fields_node.op, ast.Add)
                # if either is Attribute, resolve_fields returns [] which is fine
                # since it will be handled by the logic in bases
                return resolve_fields(fields_node.left) + resolve_fields(
                    fields_node.right)

            if any(isinstance(fields_node, t) for t in known_types):
                for field_node in fields_node.elts:
                    field = Field(field_name=Resolver.resolve(field_node),
                                  read_only=read_only)

                    fields.append(field)

            return fields
Beispiel #18
0
    def test_field_defaults(self):
        f = Field("test", 4)
        self.assertEqual(f.name, "test")
        self.assertEqual(f.size, 4)  # in bits

        # position is yet undefined
        self.assertTrue(isinstance(f.bytes, list))
        self.assertEqual(len(f.bytes), 0)

        # most and least significant bit definitions
        # relative to first/last byte in list
        # if field does not have a position, these should be -1
        self.assertEqual(f.msb, -1)
        self.assertEqual(f.lsb, -1)

        # byte relative msb/lsb are only defined for bytes that the field
        # is placed in
        self.assertEqual(f.msb_in_byte(Byte()), -1)
        self.assertEqual(f.lsb_in_byte(Byte()), -1)
Beispiel #19
0
 def test_byte_boundary_sort_placement(self):
     pp = ByteBoundarySortPlacement()
     f0 = Field("a", 4)
     f1 = Field("c", 7)
     f2 = Field("b0", 1)
     f3 = Field("d", 5)
     f4 = Field("e", 3)
     f5 = Field("big", 32)
     f6 = Field("b3", 1)
     fields = [f0, f1, f2, f3, f4, f5, f6]
     front_field = Field("first_id", 5)
     bytes = pp.place(fields, front_field=front_field)
     self.assertEqual(len(bytes), 7)
     self.assertEqual(front_field.msb_in_byte(bytes[0]), 7)
     self.assertEqual(front_field.lsb_in_byte(bytes[0]), 3)
     self.assertEqual(f4.msb_in_byte(bytes[0]), 2)
     self.assertEqual(f4.lsb_in_byte(bytes[0]), 0)
     # 32bit data
     self.assertEqual(f5.msb_in_byte(bytes[1]), 7)
     self.assertEqual(f5.lsb_in_byte(bytes[1]), 0)
     self.assertEqual(f5.msb_in_byte(bytes[2]), 7)
     self.assertEqual(f5.lsb_in_byte(bytes[2]), 0)
     self.assertEqual(f5.msb_in_byte(bytes[3]), 7)
     self.assertEqual(f5.lsb_in_byte(bytes[3]), 0)
     self.assertEqual(f5.msb_in_byte(bytes[4]), 7)
     self.assertEqual(f5.lsb_in_byte(bytes[4]), 0)
     #
     self.assertEqual(f2.msb_in_byte(bytes[5]), 7)
     self.assertEqual(f2.lsb_in_byte(bytes[5]), 7)
     self.assertEqual(f1.msb_in_byte(bytes[5]), 6)
     self.assertEqual(f1.lsb_in_byte(bytes[5]), 0)
     self.assertEqual(f6.msb_in_byte(bytes[6]), 5)
     self.assertEqual(f6.lsb_in_byte(bytes[6]), 5)
     self.assertEqual(f3.msb_in_byte(bytes[6]), 4)
     self.assertEqual(f3.lsb_in_byte(bytes[6]), 0)
     self.assertEqual(f0.msb_in_byte(bytes[7]), 3)
     self.assertEqual(f0.lsb_in_byte(bytes[7]), 0)
Beispiel #20
0
class Ether(Proto):
    name = "Ether"
    fields = {"src": Field("src"), "dst": Field("dst"), "type": Field("type")}
Beispiel #21
0
from fields import all_atacks
from fields import check_for_attacks
from fields import get_queen_moves
from ai_functions import get_best_move
import numpy
import copy


FIELD_COLOR = (0,0,0)
FPS = 100 # not higher than 1000, don't change without a good reason

pygame.init()

size = width, height = 500, 500
fields = numpy.array([
                        [Field(),Field(),Field(),Field(),Field(),Field(),Field(),Field()],
                        [Field(),Field(),Field(),Field(),Field(),Field(),Field(),Field()],
                        [Field(),Field(),Field(),Field(),Field(),Field(),Field(),Field()],
                        [Field(),Field(),Field(),Field(),Field(),Field(),Field(),Field()],
                        [Field(),Field(),Field(),Field(),Field(),Field(),Field(),Field()],
                        [Field(),Field(),Field(),Field(),Field(),Field(),Field(),Field()],
                        [Field(),Field(),Field(),Field(),Field(),Field(),Field(),Field()],
                        [Field(),Field(),Field(),Field(),Field(),Field(),Field(),Field()]
                     ])

num = 0
ex = 0
ey = 0
turn = 0 #0 is WHITE, #1 is BLACK

for tab in fields:
Beispiel #22
0
    def test_primary_key_prop_initialized(self):
        obj = Field(primary_key=True)

        assert obj.primary_key is True
Beispiel #23
0
    def test_virtual_prop_initialized(self):
        obj = Field(virtual=True)

        assert obj.virtual is True
Beispiel #24
0
    def test_default_prop_values(self):
        obj = Field()

        assert obj.primary_key is False
        assert obj.virtual is False
Beispiel #25
0
 def parse_drf_field_node(field_name, field_node):
     return Field(field_name=field_name,
                  func_name=Resolver.resolve(field_node),
                  **Resolver.func_params(field_node))
Beispiel #26
0
 def test_required(self):
     field = Field(validators=[Required()])
     for empty_val in ('', {}, [], None):
         self.assertListEqual(field.validate(empty_val),
                              ["Field is required"])
Beispiel #27
0
 def test_byte_place_multibyte_field(self):
     b = Byte()
     # placing fields, that occupy multiple bytes is fine
     self.assertTrue(b.place(Field("f2", 4), 0))
     self.assertTrue(b.place(Field("f3", 4), 10))
Beispiel #28
0
 def test_byte_place_overlapping(self):
     b = Byte()
     self.assertTrue(b.place(Field("f0", 4), 3))
     # trying to place an overlapping field should fail
     self.assertFalse(b.place(Field("fail", 4),
                              3))  # bit3 is occupied by f0
Beispiel #29
0
 def test_simple(self):
     field = Field()
     for val in (None, 0, 1, -1, 0.1, 'text', [[]], {
             'key': 'val'
     }, object()):
         self.assertFalse(field.validate(val))
Beispiel #30
0
class IP(Proto):
    name = "IP"
    fields = {"src": Field("src"), "dst": Field("dst"), "ttl": Field("ttl")}