Example #1
0
class XPathListLeaflistTests(PyangBindTestCase):
    yang_files = ["list-tc01.yang"]
    pyang_flags = ["--use-xpathhelper"]

    def setUp(self):
        self.path_helper = YANGPathHelper()
        self.instance = self.bindings.list_tc01(path_helper=self.path_helper)

    def test_leaflist_leafref_with_require_instance_true(self):
        for fish in ["mackerel", "trout", "haddock", "flounder"]:
            self.instance.container.t1.append(fish)
        for (fish, valid) in [("mackerel", True), ("haddock", True), ("minnow", False)]:
            with self.subTest(fish=fish, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t1_ptr = fish
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_leaflist_leafref_with_require_instance_false(self):
        for fish in ["mackerel", "trout", "haddock", "flounder"]:
            self.instance.container.t1.append(fish)
        for (fish, exists) in [("flounder", True), ("minnow", False)]:
            with self.subTest(fish=fish, exists=exists):
                allowed = True
                try:
                    self.instance.reference.t1_ptr_noexist = fish
                except ValueError:
                    allowed = False
                self.assertTrue(allowed)

    def test_list_leafref_with_require_instance_true(self):
        for animal in ["kangaroo", "wallaby", "koala", "dingo"]:
            self.instance.container.t2.add(animal)

        for (animal, valid) in [("kangaroo", True), ("koala", True), ("wombat", False)]:
            with self.subTest(animal=animal, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t2_ptr = animal
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_get_leaflist_with_xpath_helper_returns_single_element(self):
        for beer in ["oatmeal-stout", "amber-ale", "pale-ale", "pils", "ipa", "session-ipa"]:
            self.instance.container.t3.append(beer)

        self.assertEqual(len(self.path_helper.get("/container/t3")), 1)

    def test_find_elements_of_leaflist(self):
        for beer in ["oatmeal-stout", "amber-ale", "pale-ale", "pils", "ipa", "session-ipa"]:
            self.instance.container.t3.append(beer)

        leaflist = self.path_helper.get("/container/t3")[0]
        for (beer, valid) in [("session-ipa", True), ("amber-ale", True), ("moose-drool", False)]:
            with self.subTest(beer=beer, valid=valid):
                found = True
                try:
                    leaflist.index(beer)
                except ValueError:
                    found = False
                self.assertEqual(valid, found)

    def test_remove_elements_from_leaflist(self):
        for beer in ["oatmeal-stout", "amber-ale", "pale-ale", "pils", "ipa", "session-ipa"]:
            self.instance.container.t3.append(beer)

        for (beer, valid) in [("session-ipa", True), ("amber-ale", True), ("moose-drool", False)]:
            with self.subTest(beer=beer, valid=valid):
                removed = True
                try:
                    self.instance.container.t3.remove(beer)
                except ValueError:
                    removed = False
                self.assertEqual(removed, valid)

    def test_xpath_helper_gets_updated_leaflist_after_removing_items(self):
        for beer in ["oatmeal-stout", "amber-ale", "pale-ale", "pils", "ipa", "session-ipa"]:
            self.instance.container.t3.append(beer)
        retr = self.path_helper.get("/container/t3")  # Retrieve before to get the old value

        for beer in ["session-ipa", "amber-ale"]:
            self.instance.container.t3.remove(beer)
        retr = self.path_helper.get("/container/t3")

        for beer in ["session-ipa", "amber-ale", "moose-drool"]:
            with self.subTest(beer=beer), self.assertRaises(ValueError):
                retr[0].index(beer)

    def test_get_list_item_with_xpath_helper_returns_single_element(self):
        for beer in ["steam", "liberty", "california-lager", "porter", "ipa", "foghorn"]:
            self.instance.container.t4.add(beer)

        for (beer, exists) in [("steam", 1), ("liberty", 1), ("pygmy-owl", 0)]:
            with self.subTest(beer=beer, exists=exists):
                retr = self.path_helper.get("/container/t4[keyval=%s]" % beer)
                self.assertEqual(len(retr), exists)

    def test_remove_elements_from_list(self):
        for beer in ["steam", "liberty", "california-lager", "porter", "ipa", "foghorn"]:
            self.instance.container.t4.add(beer)

        for (beer, valid) in [("steam", True), ("liberty", True), ("pygmy-owl", False)]:
            with self.subTest(beer=beer, valid=valid):
                removed = True
                try:
                    self.instance.container.t4.delete(beer)
                except KeyError:
                    removed = False
                self.assertEqual(removed, valid)

    def test_xpath_helper_gets_updated_list_after_removing_items(self):
        for beer in ["steam", "liberty", "california-lager", "porter", "ipa", "foghorn"]:
            self.instance.container.t4.add(beer)

        for beer in ["steam", "liberty", "pygmy-owl"]:
            with self.subTest(beer=beer):
                path = "/container/t4[keyval=%s]"
                retr = self.path_helper.get(path)
                try:
                    self.instance.container.t4.delete(beer)
                except KeyError:
                    pass
                retr = self.path_helper.get(path)

                self.assertEqual(len(retr), 0)

    def test_typedef_leaflist_with_require_instance_true(self):
        for city in ["quebec-city", "montreal", "laval", "gatineau"]:
            self.instance.container.t5.append(city)

        for (city, valid) in [("quebec-city", True), ("montreal", True), ("dallas", False)]:
            with self.subTest(city=city, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t5_ptr = city
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_typedef_list_with_require_instance_true(self):
        for beer in ["la-ciboire", "la-chipie", "la-joufflue", "la-matante"]:
            self.instance.container.t6.add(beer)

        for (beer, valid) in [("la-ciboire", True), ("la-matante", True), ("heiniken", False)]:
            with self.subTest(beer=beer, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t6_ptr = beer
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_leaflist_of_leafrefs_with_require_instance_true(self):
        for beer in ["snapshot", "ranger"]:
            self.instance.container.t7.append(beer)

        for (beer, valid) in [("snapshot", True), ("ranger", True), ("trout-slayer", False)]:
            with self.subTest(beer=beer, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t7_ptr.append(beer)
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_standalone_leaflist(self):
        self.instance.standalone.ll.append(1)
        retr = self.path_helper.get("/standalone/ll")
        self.assertEqual(retr[0][0], 1)

    def test_standlone_list(self):
        self.instance.standalone.l.add(1)
        retr = self.path_helper.get("/standalone/l")
        self.assertEqual(retr[0].x, 1)

    def test_standalone_ref(self):
        self.instance.standalone.l.add(1)
        self.instance.standalone.ref = 1
        self.assertEqual(self.instance.standalone.ref._referenced_object, 1)

    def test_get_list_retrieves_correct_attribute(self):
        self.assertEqual(self.path_helper.get_list("/standalone/l")._yang_name, "l")

    def test_get_list_returns_correct_type(self):
        self.assertEqual(self.path_helper.get_list("/standalone/l")._is_container, "list")
Example #2
0
class XPathListLeaflistTests(PyangBindTestCase):
    yang_files = ['list-tc01.yang']
    pyang_flags = ['--use-xpathhelper']

    def setUp(self):
        self.path_helper = YANGPathHelper()
        self.instance = self.bindings.list_tc01(path_helper=self.path_helper)

    def test_leaflist_leafref_with_require_instance_true(self):
        for fish in ['mackerel', 'trout', 'haddock', 'flounder']:
            self.instance.container.t1.append(fish)
        for (fish, valid) in [('mackerel', True), ('haddock', True),
                              ('minnow', False)]:
            with self.subTest(fish=fish, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t1_ptr = fish
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_leaflist_leafref_with_require_instance_false(self):
        for fish in ['mackerel', 'trout', 'haddock', 'flounder']:
            self.instance.container.t1.append(fish)
        for (fish, exists) in [('flounder', True), ('minnow', False)]:
            with self.subTest(fish=fish, exists=exists):
                allowed = True
                try:
                    self.instance.reference.t1_ptr_noexist = fish
                except ValueError:
                    allowed = False
                self.assertTrue(allowed)

    def test_list_leafref_with_require_instance_true(self):
        for animal in ['kangaroo', 'wallaby', 'koala', 'dingo']:
            self.instance.container.t2.add(animal)

        for (animal, valid) in [('kangaroo', True), ('koala', True),
                                ('wombat', False)]:
            with self.subTest(animal=animal, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t2_ptr = animal
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_get_leaflist_with_xpath_helper_returns_single_element(self):
        for beer in [
                'oatmeal-stout', 'amber-ale', 'pale-ale', 'pils', 'ipa',
                'session-ipa'
        ]:
            self.instance.container.t3.append(beer)

        self.assertEqual(len(self.path_helper.get('/container/t3')), 1)

    def test_find_elements_of_leaflist(self):
        for beer in [
                'oatmeal-stout', 'amber-ale', 'pale-ale', 'pils', 'ipa',
                'session-ipa'
        ]:
            self.instance.container.t3.append(beer)

        leaflist = self.path_helper.get('/container/t3')[0]
        for (beer, valid) in [('session-ipa', True), ('amber-ale', True),
                              ('moose-drool', False)]:
            with self.subTest(beer=beer, valid=valid):
                found = True
                try:
                    leaflist.index(beer)
                except ValueError:
                    found = False
                self.assertEqual(valid, found)

    def test_remove_elements_from_leaflist(self):
        for beer in [
                'oatmeal-stout', 'amber-ale', 'pale-ale', 'pils', 'ipa',
                'session-ipa'
        ]:
            self.instance.container.t3.append(beer)

        for (beer, valid) in [('session-ipa', True), ('amber-ale', True),
                              ('moose-drool', False)]:
            with self.subTest(beer=beer, valid=valid):
                removed = True
                try:
                    self.instance.container.t3.remove(beer)
                except ValueError:
                    removed = False
                self.assertEqual(removed, valid)

    def test_xpath_helper_gets_updated_leaflist_after_removing_items(self):
        for beer in [
                'oatmeal-stout', 'amber-ale', 'pale-ale', 'pils', 'ipa',
                'session-ipa'
        ]:
            self.instance.container.t3.append(beer)
        retr = self.path_helper.get(
            '/container/t3')  # Retrieve before to get the old value

        for beer in ['session-ipa', 'amber-ale']:
            self.instance.container.t3.remove(beer)
        retr = self.path_helper.get('/container/t3')

        for beer in ['session-ipa', 'amber-ale', 'moose-drool']:
            with self.subTest(beer=beer), self.assertRaises(ValueError):
                retr[0].index(beer)

    def test_get_list_item_with_xpath_helper_returns_single_element(self):
        for beer in [
                'steam', 'liberty', 'california-lager', 'porter', 'ipa',
                'foghorn'
        ]:
            self.instance.container.t4.add(beer)

        for (beer, exists) in [('steam', 1), ('liberty', 1), ('pygmy-owl', 0)]:
            with self.subTest(beer=beer, exists=exists):
                retr = self.path_helper.get('/container/t4[keyval=%s]' % beer)
                self.assertEqual(len(retr), exists)

    def test_remove_elements_from_list(self):
        for beer in [
                'steam', 'liberty', 'california-lager', 'porter', 'ipa',
                'foghorn'
        ]:
            self.instance.container.t4.add(beer)

        for (beer, valid) in [('steam', True), ('liberty', True),
                              ('pygmy-owl', False)]:
            with self.subTest(beer=beer, valid=valid):
                removed = True
                try:
                    self.instance.container.t4.delete(beer)
                except KeyError:
                    removed = False
                self.assertEqual(removed, valid)

    def test_xpath_helper_gets_updated_list_after_removing_items(self):
        for beer in [
                'steam', 'liberty', 'california-lager', 'porter', 'ipa',
                'foghorn'
        ]:
            self.instance.container.t4.add(beer)

        for beer in ['steam', 'liberty', 'pygmy-owl']:
            with self.subTest(beer=beer):
                path = '/container/t4[keyval=%s]'
                retr = self.path_helper.get(path)
                try:
                    self.instance.container.t4.delete(beer)
                except KeyError:
                    pass
                retr = self.path_helper.get(path)

                self.assertEqual(len(retr), 0)

    def test_typedef_leaflist_with_require_instance_true(self):
        for city in ['quebec-city', 'montreal', 'laval', 'gatineau']:
            self.instance.container.t5.append(city)

        for (city, valid) in [('quebec-city', True), ('montreal', True),
                              ('dallas', False)]:
            with self.subTest(city=city, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t5_ptr = city
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_typedef_list_with_require_instance_true(self):
        for beer in ['la-ciboire', 'la-chipie', 'la-joufflue', 'la-matante']:
            self.instance.container.t6.add(beer)

        for (beer, valid) in [('la-ciboire', True), ('la-matante', True),
                              ('heiniken', False)]:
            with self.subTest(beer=beer, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t6_ptr = beer
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_leaflist_of_leafrefs_with_require_instance_true(self):
        for beer in ['snapshot', 'ranger']:
            self.instance.container.t7.append(beer)

        for (beer, valid) in [('snapshot', True), ('ranger', True),
                              ('trout-slayer', False)]:
            with self.subTest(beer=beer, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t7_ptr.append(beer)
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_standalone_leaflist(self):
        self.instance.standalone.ll.append(1)
        retr = self.path_helper.get('/standalone/ll')
        self.assertEqual(retr[0][0], 1)

    def test_standlone_list(self):
        self.instance.standalone.l.add(1)
        retr = self.path_helper.get('/standalone/l')
        self.assertEqual(retr[0].x, 1)

    def test_standalone_ref(self):
        self.instance.standalone.l.add(1)
        self.instance.standalone.ref = 1
        self.assertEqual(self.instance.standalone.ref._referenced_object, 1)

    def test_get_list_retrieves_correct_attribute(self):
        self.assertEqual(
            self.path_helper.get_list('/standalone/l')._yang_name, 'l')

    def test_get_list_returns_correct_type(self):
        self.assertEqual(
            self.path_helper.get_list('/standalone/l')._is_container, 'list')
Example #3
0
class XPathListLeaflistTests(PyangBindTestCase):
    yang_files = ["list-tc01.yang"]
    pyang_flags = ["--use-xpathhelper"]

    def setUp(self):
        self.path_helper = YANGPathHelper()
        self.instance = self.bindings.list_tc01(path_helper=self.path_helper)

    def test_leaflist_leafref_with_require_instance_true(self):
        for fish in ["mackerel", "trout", "haddock", "flounder"]:
            self.instance.container.t1.append(fish)
        for (fish, valid) in [("mackerel", True), ("haddock", True),
                              ("minnow", False)]:
            with self.subTest(fish=fish, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t1_ptr = fish
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_leaflist_leafref_with_require_instance_false(self):
        for fish in ["mackerel", "trout", "haddock", "flounder"]:
            self.instance.container.t1.append(fish)
        for (fish, exists) in [("flounder", True), ("minnow", False)]:
            with self.subTest(fish=fish, exists=exists):
                allowed = True
                try:
                    self.instance.reference.t1_ptr_noexist = fish
                except ValueError:
                    allowed = False
                self.assertTrue(allowed)

    def test_list_leafref_with_require_instance_true(self):
        for animal in ["kangaroo", "wallaby", "koala", "dingo"]:
            self.instance.container.t2.add(animal)

        for (animal, valid) in [("kangaroo", True), ("koala", True),
                                ("wombat", False)]:
            with self.subTest(animal=animal, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t2_ptr = animal
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_get_leaflist_with_xpath_helper_returns_single_element(self):
        for beer in [
                "oatmeal-stout", "amber-ale", "pale-ale", "pils", "ipa",
                "session-ipa"
        ]:
            self.instance.container.t3.append(beer)

        self.assertEqual(len(self.path_helper.get("/container/t3")), 1)

    def test_find_elements_of_leaflist(self):
        for beer in [
                "oatmeal-stout", "amber-ale", "pale-ale", "pils", "ipa",
                "session-ipa"
        ]:
            self.instance.container.t3.append(beer)

        leaflist = self.path_helper.get("/container/t3")[0]
        for (beer, valid) in [("session-ipa", True), ("amber-ale", True),
                              ("moose-drool", False)]:
            with self.subTest(beer=beer, valid=valid):
                found = True
                try:
                    leaflist.index(beer)
                except ValueError:
                    found = False
                self.assertEqual(valid, found)

    def test_remove_elements_from_leaflist(self):
        for beer in [
                "oatmeal-stout", "amber-ale", "pale-ale", "pils", "ipa",
                "session-ipa"
        ]:
            self.instance.container.t3.append(beer)

        for (beer, valid) in [("session-ipa", True), ("amber-ale", True),
                              ("moose-drool", False)]:
            with self.subTest(beer=beer, valid=valid):
                removed = True
                try:
                    self.instance.container.t3.remove(beer)
                except ValueError:
                    removed = False
                self.assertEqual(removed, valid)

    def test_xpath_helper_gets_updated_leaflist_after_removing_items(self):
        for beer in [
                "oatmeal-stout", "amber-ale", "pale-ale", "pils", "ipa",
                "session-ipa"
        ]:
            self.instance.container.t3.append(beer)
        retr = self.path_helper.get(
            "/container/t3")  # Retrieve before to get the old value

        for beer in ["session-ipa", "amber-ale"]:
            self.instance.container.t3.remove(beer)
        retr = self.path_helper.get("/container/t3")

        for beer in ["session-ipa", "amber-ale", "moose-drool"]:
            with self.subTest(beer=beer), self.assertRaises(ValueError):
                retr[0].index(beer)

    def test_get_list_item_with_xpath_helper_returns_single_element(self):
        for beer in [
                "steam", "liberty", "california-lager", "porter", "ipa",
                "foghorn"
        ]:
            self.instance.container.t4.add(beer)

        for (beer, exists) in [("steam", 1), ("liberty", 1), ("pygmy-owl", 0)]:
            with self.subTest(beer=beer, exists=exists):
                retr = self.path_helper.get("/container/t4[keyval=%s]" % beer)
                self.assertEqual(len(retr), exists)

    def test_remove_elements_from_list(self):
        for beer in [
                "steam", "liberty", "california-lager", "porter", "ipa",
                "foghorn"
        ]:
            self.instance.container.t4.add(beer)

        for (beer, valid) in [("steam", True), ("liberty", True),
                              ("pygmy-owl", False)]:
            with self.subTest(beer=beer, valid=valid):
                removed = True
                try:
                    self.instance.container.t4.delete(beer)
                except KeyError:
                    removed = False
                self.assertEqual(removed, valid)

    def test_xpath_helper_gets_updated_list_after_removing_items(self):
        for beer in [
                "steam", "liberty", "california-lager", "porter", "ipa",
                "foghorn"
        ]:
            self.instance.container.t4.add(beer)

        for beer in ["steam", "liberty", "pygmy-owl"]:
            with self.subTest(beer=beer):
                path = "/container/t4[keyval=%s]"
                retr = self.path_helper.get(path)
                try:
                    self.instance.container.t4.delete(beer)
                except KeyError:
                    pass
                retr = self.path_helper.get(path)

                self.assertEqual(len(retr), 0)

    def test_typedef_leaflist_with_require_instance_true(self):
        for city in ["quebec-city", "montreal", "laval", "gatineau"]:
            self.instance.container.t5.append(city)

        for (city, valid) in [("quebec-city", True), ("montreal", True),
                              ("dallas", False)]:
            with self.subTest(city=city, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t5_ptr = city
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_typedef_list_with_require_instance_true(self):
        for beer in ["la-ciboire", "la-chipie", "la-joufflue", "la-matante"]:
            self.instance.container.t6.add(beer)

        for (beer, valid) in [("la-ciboire", True), ("la-matante", True),
                              ("heiniken", False)]:
            with self.subTest(beer=beer, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t6_ptr = beer
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_leaflist_of_leafrefs_with_require_instance_true(self):
        for beer in ["snapshot", "ranger"]:
            self.instance.container.t7.append(beer)

        for (beer, valid) in [("snapshot", True), ("ranger", True),
                              ("trout-slayer", False)]:
            with self.subTest(beer=beer, valid=valid):
                allowed = True
                try:
                    self.instance.reference.t7_ptr.append(beer)
                except ValueError:
                    allowed = False
                self.assertEqual(valid, allowed)

    def test_standalone_leaflist(self):
        self.instance.standalone.ll.append(1)
        retr = self.path_helper.get("/standalone/ll")
        self.assertEqual(retr[0][0], 1)

    def test_standlone_list(self):
        self.instance.standalone.l.add(1)
        retr = self.path_helper.get("/standalone/l")
        self.assertEqual(retr[0].x, 1)

    def test_standalone_ref(self):
        self.instance.standalone.l.add(1)
        self.instance.standalone.ref = 1
        self.assertEqual(self.instance.standalone.ref._referenced_object, 1)

    def test_get_list_retrieves_correct_attribute(self):
        self.assertEqual(
            self.path_helper.get_list("/standalone/l")._yang_name, "l")

    def test_get_list_returns_correct_type(self):
        self.assertEqual(
            self.path_helper.get_list("/standalone/l")._is_container, "list")