コード例 #1
0
ファイル: test_set_map.py プロジェクト: dohop/py-pointless
	def testMap(self):
		maps = [
			{ 1: 0 },
			{ 2: 'asdf' },
			{ 'asdf':2 },
			{
				1: 2,
				2: 3,
				4: 4,
				'asdf': 123, 
				(1,2): [4,5,'hello world']
			}
		]

		maps[3][(1,2)].append(maps)

		fname = 'test_map.map'

		for test_i, m in enumerate(maps):
			pointless.serialize(m, fname)
			root_a = pointless.Pointless(fname).GetRoot()

			for k in m.iterkeys():
				self.assert_(k in root_a)

				v_m = m[k]
				v_a = root_a[k]

				self.assert_(pointless.pointless_cmp(v_m, v_a) == 0)

			del root_a
コード例 #2
0
	def test_vector_slice(self):
		random.seed(0)
		vector = list(range(1000))

		for v_py, v_po in VectorSlices('deleteme.map', vector):
			c = pointless.pointless_cmp(v_py, v_po)
			self.assertEquals(c, 0)
コード例 #3
0
	def test_vector_slice(self):
		random.seed(0)
		vector = range(1000)

		for v_py, v_po in VectorSlices('deleteme.map', vector):
			c = pointless.pointless_cmp(v_py, v_po)
			self.assertEquals(c, 0)
コード例 #4
0
    def testMap(self):
        maps = [{
            1: 0
        }, {
            2: 'asdf'
        }, {
            'asdf': 2
        }, {
            1: 2,
            2: 3,
            4: 4,
            'asdf': 123,
            (1, 2): [4, 5, 'hello world']
        }]

        maps[-1][(1, 2)].append(maps)

        fname = 'test_map.map'

        for test_i, m in enumerate(maps):
            pointless.serialize(m, fname)
            root_a = pointless.Pointless(fname).GetRoot()

            for k in six.iterkeys(m):
                self.assert_(k in root_a)

                v_m = m[k]
                v_a = root_a[k]

                if not self._contains_dict_or_set(v_m):
                    self.assert_(pointless.pointless_cmp(v_m, v_a) == 0)

            del root_a
コード例 #5
0
ファイル: test_cmp.py プロジェクト: dohop/py-pointless
	def _testTotalOrder(self, values):
		# we're testing, for each 3-combination of values
		for i, (v_a, v_b, v_c) in enumerate(itertools.product(values, values, values)):
			# print 'total order', i, len(values) ** 3
			# write the values out
			p_a = serialize_and_get(v_a)
			p_b = serialize_and_get(v_b)
			p_c = serialize_and_get(v_c)

			# test (a > b) <=> (a < b)
			cmp_ab = sign(pointless.pointless_cmp(p_a, p_b))
			cmp_ba = sign(pointless.pointless_cmp(p_b, p_a))
			self.assert_(cmp_ab == -cmp_ba)

			cmp_ac = sign(pointless.pointless_cmp(p_a, p_c))
			cmp_ca = sign(pointless.pointless_cmp(p_c, p_a))
			self.assert_(cmp_ac == -cmp_ca)

			cmp_bc = sign(pointless.pointless_cmp(p_b, p_c))
			cmp_cb = sign(pointless.pointless_cmp(p_c, p_b))
			self.assert_(cmp_bc == -cmp_cb)

			# a <= b and b <= a -> a == b
			self.assert_(not (cmp_ab in (-1, 0) and cmp_ba in (-1, 0) and cmp_ab != 0))

			# a <= b and b <= c -> a <= c
			self.assert_(not (cmp_ab in (-1, 0) and cmp_bc in (-1, 0) and cmp_ac not in (-1, 0)))

			# a <= b or b <= a
			self.assert_(cmp_ab in (-1, 0) or cmp_ba in (-1, 0))

			del p_a
			del p_b
			del p_c
コード例 #6
0
    def _testPythonCmp(self, values):
        for i, (v_a, v_b) in enumerate(itertools.product(values, values)):
            # test against python
            cmp_failure = False

            try:
                py_cmp = sign(cmp(v_a, v_b))
            except TypeError as e:
                if six.PY3 and 'not supported between instances of ' in str(e):
                    cmp_failure = True
                elif six.PY3 and 'unorderable types' in str(e):
                    cmp_failure = True
                else:
                    raise

            p_a = serialize_and_get(v_a)
            p_b = serialize_and_get(v_b)

            if cmp_failure:
                self.assertRaises(TypeError, pointless.pointless_cmp, p_a, p_b)
                self.assertRaises(TypeError, pointless.pointless_cmp, p_a, v_b)
                self.assertRaises(TypeError, pointless.pointless_cmp, v_a, p_b)
                self.assertRaises(TypeError, pointless.pointless_cmp, v_a, v_b)
            else:
                p_cmp_a = sign(pointless.pointless_cmp(p_a, p_b))
                p_cmp_b = sign(pointless.pointless_cmp(p_a, v_b))
                p_cmp_c = sign(pointless.pointless_cmp(v_a, p_b))
                p_cmp_d = sign(pointless.pointless_cmp(v_a, v_b))

                self.assertEqual(p_cmp_a, p_cmp_b)
                self.assertEqual(p_cmp_a, p_cmp_c)
                self.assertEqual(p_cmp_a, p_cmp_d)

                # we're only interested in pointless/python compatibility for equality matcing
                self.assert_(not (
                    (py_cmp == 0 or p_cmp_a == 0) and p_cmp_a != py_cmp))

            del p_a
            del p_b
コード例 #7
0
ファイル: test_cmp.py プロジェクト: dohop/py-pointless
	def _testPythonCmp(self, values):
		for i, (v_a, v_b) in enumerate(itertools.product(values, values)):
			# print 'cmp', i, len(values) ** 2
			p_a = serialize_and_get(v_a)
			p_b = serialize_and_get(v_b)

			p_cmp_a = sign(pointless.pointless_cmp(p_a, p_b))
			p_cmp_b = sign(pointless.pointless_cmp(p_a, v_b))
			p_cmp_c = sign(pointless.pointless_cmp(v_a, p_b))
			p_cmp_d = sign(pointless.pointless_cmp(v_a, v_b))

			self.assertEqual(p_cmp_a, p_cmp_b)
			self.assertEqual(p_cmp_a, p_cmp_c)
			self.assertEqual(p_cmp_a, p_cmp_d)

			# test against python
			py_cmp = sign(cmp(v_a, v_b))

			# we're only interested in pointless/python compatibility for equality matcing
			self.assert_(not ((py_cmp == 0 or p_cmp_a == 0) and p_cmp_a != py_cmp))

			del p_a
			del p_b
コード例 #8
0
    def testEvilCases(self):
        for value, comparable in self.bad_case_iter():
            pointless.serialize(value, 'file.map')
            svalue = pointless.Pointless('file.map').GetRoot()

            if comparable:
                self.assertEquals(pointless.pointless_cmp(value, svalue), 0)

            s_a = str(value)
            s_b = str(svalue)

            # stringifaction of dicts/set does not have a consistent ordering
            if comparable:
                if not self._contains_dict_or_set(value):
                    self.assertEquals(s_a, s_b)
コード例 #9
0
    def _testTotalOrder(self, values):
        # we're testing, for each 3-combination of values
        for i, (v_a, v_b,
                v_c) in enumerate(itertools.product(values, values, values)):
            # print 'total order', i, len(values) ** 3
            # write the values out
            p_a = serialize_and_get(v_a)
            p_b = serialize_and_get(v_b)
            p_c = serialize_and_get(v_c)

            is_type_error_ab = False
            is_type_error_ac = False
            is_type_error_bc = False

            try:
                cmp(p_a, p_b)
            except TypeError:
                is_type_error_ab = True

            try:
                cmp(p_a, p_c)
            except TypeError:
                is_type_error_ac = True

            try:
                cmp(p_b, p_c)
            except TypeError:
                is_type_error_bc = True

            if not (is_type_error_ab or is_type_error_ac or is_type_error_bc):
                # test (a > b) <=> (a < b)
                cmp_ab = sign(pointless.pointless_cmp(p_a, p_b))
                cmp_ba = sign(pointless.pointless_cmp(p_b, p_a))
                self.assert_(cmp_ab == -cmp_ba)

                cmp_ac = sign(pointless.pointless_cmp(p_a, p_c))
                cmp_ca = sign(pointless.pointless_cmp(p_c, p_a))
                self.assert_(cmp_ac == -cmp_ca)

                cmp_bc = sign(pointless.pointless_cmp(p_b, p_c))
                cmp_cb = sign(pointless.pointless_cmp(p_c, p_b))
                self.assert_(cmp_bc == -cmp_cb)

                # a <= b and b <= a -> a == b
                self.assert_(not (
                    cmp_ab in (-1, 0) and cmp_ba in (-1, 0) and cmp_ab != 0))

                # a <= b and b <= c -> a <= c
                self.assert_(not (cmp_ab in (-1, 0) and cmp_bc in
                                  (-1, 0) and cmp_ac not in (-1, 0)))

                # a <= b or b <= a
                self.assert_(cmp_ab in (-1, 0) or cmp_ba in (-1, 0))
            else:
                try:
                    pointless.pointless_cmp(p_a, p_b)
                    pointless.pointless_cmp(p_b, p_a)
                    pointless.pointless_cmp(p_a, p_c)
                    pointless.pointless_cmp(p_c, p_a)
                    pointless.pointless_cmp(p_b, p_c)
                    pointless.pointless_cmp(p_c, p_b)
                    self.fail('some of these should have raised TypeError')
                except TypeError:
                    pass

            del p_a
            del p_b
            del p_c