#!/usr/bin/env python3 # # Copyright (C) 2022 VyOS maintainers and contributors # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 or later as # published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . from unittest import TestCase import vyos.opmode class TestVyOSOpMode(TestCase): def test_field_name_normalization(self): from vyos.opmode import _normalize_field_name self.assertEqual(_normalize_field_name(" foo bar "), "foo_bar") self.assertEqual(_normalize_field_name("foo-bar"), "foo_bar") self.assertEqual(_normalize_field_name("foo (bar) baz"), "foo_bar_baz") self.assertEqual(_normalize_field_name("load%"), "load_percentage") def test_dict_fields_normalization_non_unique(self): from vyos.opmode import _normalize_field_names # Space and dot are both replaced by an underscore, # so dicts like this cannor be normalized uniquely data = {"foo bar": True, "foo.bar": False} with self.assertRaises(vyos.opmode.InternalError): _normalize_field_names(data) def test_dict_fields_normalization(self): from vyos.opmode import _normalize_field_names data = {"foo bar": True, "bar-baz": False} self.assertEqual(_normalize_field_names(data), {"foo_bar": True, "bar_baz": False})