def test_value_extend(self):
        prop = Property(name="extend")

        # Test extend w/o Property value or dtype.
        val = [1, 2, 3]
        prop.extend(val)
        self.assertEqual(prop.dtype, DType.int)
        self.assertEqual(prop.values, val)

        # Extend with single value.
        prop.extend(4)
        self.assertEqual(prop.values, [1, 2, 3, 4])

        # Extend with list value.
        prop.extend([5, 6])
        self.assertEqual(prop.values, [1, 2, 3, 4, 5, 6])

        # Test extend w/o Property value
        prop = Property(name="extend", dtype="float")
        prop.extend([1.0, 2.0, 3.0])
        self.assertEqual(prop.values, [1.0, 2.0, 3.0])

        # Test extend with Property value
        prop = Property(name="extend", value=10)
        prop.extend([20, 30, '40'])
        self.assertEqual(prop.values, [10, 20, 30, 40])

        # Test extend fail with mismatching dtype
        with self.assertRaises(ValueError):
            prop.extend(['5', 6, 7])
        with self.assertRaises(ValueError):
            prop.extend([5, 6, 'a'])

        # Test extend via Property
        prop = Property(name="extend", value=["a", "b"])
        ext_prop = Property(name="value extend", value="c")
        prop.extend(ext_prop)
        self.assertEqual(prop.values, ["a", "b", "c"])

        ext_prop.values = ["d", "e"]
        prop.extend(ext_prop)
        self.assertEqual(prop.values, ["a", "b", "c", "d", "e"])

        ext_prop = Property(name="value extend", value=[1, 2 ,3])
        with self.assertRaises(ValueError):
            prop.extend(ext_prop)
        self.assertEqual(prop.values, ["a", "b", "c", "d", "e"])

        # Test extend via Property unit check
        prop = Property(name="extend", value=[1, 2], unit="mV")
        ext_prop = Property(name="extend", value=[3, 4], unit="mV")
        prop.extend(ext_prop)
        self.assertEqual(prop.values, [1, 2, 3, 4])

        ext_prop.unit = "kV"
        with self.assertRaises(ValueError):
            prop.extend(ext_prop)
        self.assertEqual(prop.values, [1, 2, 3, 4])

        ext_prop.unit = ""
        with self.assertRaises(ValueError):
            prop.extend(ext_prop)
        self.assertEqual(prop.values, [1, 2, 3, 4])

        # Test strict flag
        prop = Property(name="extend", value=[1, 2], dtype="int")
        with self.assertRaises(ValueError):
            prop.extend([3.14, True, "5.927"])
        self.assertEqual(prop.values, [1, 2])

        prop.extend([3.14, True, "5.927"], strict=False)
        self.assertEqual(prop.values, [1, 2, 3, 1, 5])

        # Make sure non-convertible values still raise an error
        with self.assertRaises(ValueError):
            prop.extend([6, "some text"])
Exemplo n.º 2
0
    def test_value_extend(self):
        prop = Property(name="extend")

        # Test extend w/o Property value or dtype.
        val = [1, 2, 3]
        prop.extend(val)
        self.assertEqual(prop.dtype, DType.int)
        self.assertEqual(prop.values, val)

        # Extend with single value.
        prop.extend(4)
        self.assertEqual(prop.values, [1, 2, 3, 4])

        # Extend with list value.
        prop.extend([5, 6])
        self.assertEqual(prop.values, [1, 2, 3, 4, 5, 6])

        # Test extend w/o Property value
        prop = Property(name="extend", dtype="float")
        prop.extend([1.0, 2.0, 3.0])
        self.assertEqual(prop.values, [1.0, 2.0, 3.0])

        # Test extend with Property value
        prop = Property(name="extend", value=10)
        prop.extend([20, 30, '40'])
        self.assertEqual(prop.values, [10, 20, 30, 40])

        # Test extend fail with mismatching dtype
        with self.assertRaises(ValueError):
            prop.extend(['5', 6, 7])
        with self.assertRaises(ValueError):
            prop.extend([5, 6, 'a'])

        # Test extend via Property
        prop = Property(name="extend", value=["a", "b"])
        ext_prop = Property(name="value extend", value="c")
        prop.extend(ext_prop)
        self.assertEqual(prop.values, ["a", "b", "c"])

        ext_prop.values = ["d", "e"]
        prop.extend(ext_prop)
        self.assertEqual(prop.values, ["a", "b", "c", "d", "e"])

        ext_prop = Property(name="value extend", value=[1, 2, 3])
        with self.assertRaises(ValueError):
            prop.extend(ext_prop)
        self.assertEqual(prop.values, ["a", "b", "c", "d", "e"])

        # Test extend via Property unit check
        prop = Property(name="extend", value=[1, 2], unit="mV")
        ext_prop = Property(name="extend", value=[3, 4], unit="mV")
        prop.extend(ext_prop)
        self.assertEqual(prop.values, [1, 2, 3, 4])

        ext_prop.unit = "kV"
        with self.assertRaises(ValueError):
            prop.extend(ext_prop)
        self.assertEqual(prop.values, [1, 2, 3, 4])

        ext_prop.unit = ""
        with self.assertRaises(ValueError):
            prop.extend(ext_prop)
        self.assertEqual(prop.values, [1, 2, 3, 4])

        # Test strict flag
        prop = Property(name="extend", value=[1, 2], dtype="int")
        with self.assertRaises(ValueError):
            prop.extend([3.14, True, "5.927"])
        self.assertEqual(prop.values, [1, 2])

        prop.extend([3.14, True, "5.927"], strict=False)
        self.assertEqual(prop.values, [1, 2, 3, 1, 5])

        # Make sure non-convertible values still raise an error
        with self.assertRaises(ValueError):
            prop.extend([6, "some text"])

        prop1 = Property(name="prop", value=["A Abraham", "B Barnes", "C Clark"],
                         dtype=DType.person)
        prop1.extend("D Dickins")
        self.assertEqual(len(prop1), 4)
        self.assertRaises(ValueError, prop1.extend, 1)
        self.assertRaises(ValueError, prop1.extend, 1.3)
        self.assertRaises(ValueError, prop1.extend, True)

        prop2 = Property(name="prop", value=["https://en.wikipedia.org/wiki/Earth"],
                         dtype=DType.url)
        prop2.extend("https://en.wikipedia.org/wiki/Mars")
        self.assertEqual(len(prop2), 2)
        self.assertRaises(ValueError, prop2.extend, 1)
        self.assertRaises(ValueError, prop2.extend, 1.3)
        self.assertRaises(ValueError, prop2.extend, True)

        prop3 = Property(name="prop", value=["Earth is No. 3."], dtype=DType.text)
        prop3.extend("Mars is No. 4.")
        self.assertEqual(len(prop3), 2)
        self.assertRaises(ValueError, prop3.extend, 1)
        self.assertRaises(ValueError, prop3.extend, 1.3)
        self.assertRaises(ValueError, prop3.extend, True)

        prop4 = Property(name="tuple-test", dtype="3-tuple", values="(1; 2; 3)")
        prop4.extend(["(7; 8; 9)", "(10; 11; 12)"])
        self.assertEqual(len(prop4), 3)
        self.assertRaises(ValueError, prop4.extend, "(10; 11)")
        prop4.extend([[2, 3, 4], [5, 6, 7]])
        self.assertEqual(len(prop4), 5)
        self.assertRaises(ValueError, prop4.extend, [[10, 11]])

        prop4 = Property(name="prop4", dtype="date", values=['2011-12-01', '2011-12-02'])
        with self.assertRaises(ValueError):
            prop4.extend('2011-12-03', strict=True)
        self.assertEqual(prop4.values, [datetime.date(2011, 12, 1), datetime.date(2011, 12, 2)])
        prop4.extend('2011-12-03', strict=False)
        self.assertEqual(prop4.values, [datetime.date(2011, 12, 1), datetime.date(2011, 12, 2),
                                        datetime.date(2011, 12, 3)])
        prop4.extend([datetime.date(2011, 12, 4)], strict=True)
        self.assertEqual(prop4.values, [datetime.date(2011, 12, 1), datetime.date(2011, 12, 2),
                                        datetime.date(2011, 12, 3), datetime.date(2011, 12, 4)])
        prop4.extend([datetime.date(2011, 12, 5), datetime.date(2011, 12, 6)], strict=True)
        self.assertEqual(prop4.values, [datetime.date(2011, 12, 1), datetime.date(2011, 12, 2),
                                        datetime.date(2011, 12, 3), datetime.date(2011, 12, 4),
                                        datetime.date(2011, 12, 5), datetime.date(2011, 12, 6)])
        with self.assertRaises(ValueError):
            prop4.extend(['2011-12-03', 'abc'], strict=False)


        prop5 = Property(name="prop5", dtype="time", values=['12:00:01', '12:00:02'])
        with self.assertRaises(ValueError):
            prop5.extend('12:00:03', strict=True)
        self.assertEqual(prop5.values, [datetime.time(12, 0, 1), datetime.time(12, 0, 2)])
        prop5.extend('12:00:03', strict=False)
        self.assertEqual(prop5.values, [datetime.time(12, 0, 1), datetime.time(12, 0, 2),
                                        datetime.time(12, 0, 3)])
        prop5.extend([datetime.time(12, 0, 4)], strict=True)
        self.assertEqual(prop5.values, [datetime.time(12, 0, 1), datetime.time(12, 0, 2),
                                        datetime.time(12, 0, 3), datetime.time(12, 0, 4)])
        prop5.extend([datetime.time(12, 0, 5), datetime.time(12, 0, 6)], strict=True)
        self.assertEqual(prop5.values, [datetime.time(12, 0, 1), datetime.time(12, 0, 2),
                                        datetime.time(12, 0, 3), datetime.time(12, 0, 4),
                                        datetime.time(12, 0, 5), datetime.time(12, 0, 6)])
        with self.assertRaises(ValueError):
            prop4.extend(['12:00:07', 'abc'], strict=False)

        prop6 = Property(name="prop6", dtype="datetime",
                         values=['2011-12-01 12:00:01', '2011-12-01 12:00:02'])
        with self.assertRaises(ValueError):
            prop6.extend('2011-12-01 12:00:03', strict=True)
        self.assertEqual(prop6.values, [datetime.datetime(2011, 12, 1, 12, 0, 1),
                                        datetime.datetime(2011, 12, 1, 12, 0, 2)])
        prop6.extend('2011-12-01 12:00:03', strict=False)
        self.assertEqual(prop6.values, [datetime.datetime(2011, 12, 1, 12, 0, 1),
                                        datetime.datetime(2011, 12, 1, 12, 0, 2),
                                        datetime.datetime(2011, 12, 1, 12, 0, 3)])
        prop6.extend([datetime.datetime(2011, 12, 1, 12, 0, 4)], strict=True)
        self.assertEqual(prop6.values, [datetime.datetime(2011, 12, 1, 12, 0, 1),
                                        datetime.datetime(2011, 12, 1, 12, 0, 2),
                                        datetime.datetime(2011, 12, 1, 12, 0, 3),
                                        datetime.datetime(2011, 12, 1, 12, 0, 4)])
        prop6.extend([datetime.datetime(2011, 12, 1, 12, 0, 5),
                      datetime.datetime(2011, 12, 1, 12, 0, 6)], strict=True)
        self.assertEqual(prop6.values, [datetime.datetime(2011, 12, 1, 12, 0, 1),
                                        datetime.datetime(2011, 12, 1, 12, 0, 2),
                                        datetime.datetime(2011, 12, 1, 12, 0, 3),
                                        datetime.datetime(2011, 12, 1, 12, 0, 4),
                                        datetime.datetime(2011, 12, 1, 12, 0, 5),
                                        datetime.datetime(2011, 12, 1, 12, 0, 6)])
        with self.assertRaises(ValueError):
            prop4.extend(['2011-12-03 12:00:07', 'abc'], strict=False)
Exemplo n.º 3
0
    def test_value_extend(self):
        prop = Property(name="extend")

        # Test extend w/o Property value or dtype.
        val = [1, 2, 3]
        prop.extend(val)
        self.assertEqual(prop.dtype, DType.int)
        self.assertEqual(prop.values, val)

        # Extend with single value.
        prop.extend(4)
        self.assertEqual(prop.values, [1, 2, 3, 4])

        # Extend with list value.
        prop.extend([5, 6])
        self.assertEqual(prop.values, [1, 2, 3, 4, 5, 6])

        # Test extend w/o Property value
        prop = Property(name="extend", dtype="float")
        prop.extend([1.0, 2.0, 3.0])
        self.assertEqual(prop.values, [1.0, 2.0, 3.0])

        # Test extend with Property value
        prop = Property(name="extend", value=10)
        prop.extend([20, 30, '40'])
        self.assertEqual(prop.values, [10, 20, 30, 40])

        # Test extend fail with mismatching dtype
        with self.assertRaises(ValueError):
            prop.extend(['5', 6, 7])
        with self.assertRaises(ValueError):
            prop.extend([5, 6, 'a'])

        # Test extend via Property
        prop = Property(name="extend", value=["a", "b"])
        ext_prop = Property(name="value extend", value="c")
        prop.extend(ext_prop)
        self.assertEqual(prop.values, ["a", "b", "c"])

        ext_prop.values = ["d", "e"]
        prop.extend(ext_prop)
        self.assertEqual(prop.values, ["a", "b", "c", "d", "e"])

        ext_prop = Property(name="value extend", value=[1, 2, 3])
        with self.assertRaises(ValueError):
            prop.extend(ext_prop)
        self.assertEqual(prop.values, ["a", "b", "c", "d", "e"])

        # Test extend via Property unit check
        prop = Property(name="extend", value=[1, 2], unit="mV")
        ext_prop = Property(name="extend", value=[3, 4], unit="mV")
        prop.extend(ext_prop)
        self.assertEqual(prop.values, [1, 2, 3, 4])

        ext_prop.unit = "kV"
        with self.assertRaises(ValueError):
            prop.extend(ext_prop)
        self.assertEqual(prop.values, [1, 2, 3, 4])

        ext_prop.unit = ""
        with self.assertRaises(ValueError):
            prop.extend(ext_prop)
        self.assertEqual(prop.values, [1, 2, 3, 4])

        # Test strict flag
        prop = Property(name="extend", value=[1, 2], dtype="int")
        with self.assertRaises(ValueError):
            prop.extend([3.14, True, "5.927"])
        self.assertEqual(prop.values, [1, 2])

        prop.extend([3.14, True, "5.927"], strict=False)
        self.assertEqual(prop.values, [1, 2, 3, 1, 5])

        # Make sure non-convertible values still raise an error
        with self.assertRaises(ValueError):
            prop.extend([6, "some text"])

        p1 = Property(name="prop",
                      value=["A Abraham", "B Barnes", "C Clark"],
                      dtype=DType.person)
        p1.extend("D Dickins")
        self.assertEqual(len(p1), 4)
        self.assertRaises(ValueError, p1.extend, 1)
        self.assertRaises(ValueError, p1.extend, 1.3)
        self.assertRaises(ValueError, p1.extend, True)

        p2 = Property(name="prop",
                      value=["https://en.wikipedia.org/wiki/Earth"],
                      dtype=DType.url)
        p2.extend("https://en.wikipedia.org/wiki/Mars")
        self.assertEqual(len(p2), 2)
        self.assertRaises(ValueError, p2.append, 1)
        self.assertRaises(ValueError, p2.append, 1.3)
        self.assertRaises(ValueError, p2.append, True)

        p3 = Property(name="prop", value=["Earth is No. 3."], dtype=DType.text)
        p3.extend("Mars is No. 4.")
        self.assertEqual(len(p3), 2)
        self.assertRaises(ValueError, p3.append, 1)
        self.assertRaises(ValueError, p3.append, 1.3)
        self.assertRaises(ValueError, p3.append, True)