From 195e4bda54d8fd49936213a8f28349b96fb5acd2 Mon Sep 17 00:00:00 2001 From: Dan Klein Date: Fri, 8 Apr 2016 22:34:20 +0300 Subject: added filters.py ToggleFilter functionality, and its test file --- .../regression/functional_tests/filters_test.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 scripts/automation/regression/functional_tests/filters_test.py (limited to 'scripts/automation/regression/functional_tests') diff --git a/scripts/automation/regression/functional_tests/filters_test.py b/scripts/automation/regression/functional_tests/filters_test.py new file mode 100644 index 00000000..5479a70c --- /dev/null +++ b/scripts/automation/regression/functional_tests/filters_test.py @@ -0,0 +1,20 @@ +#!/router/bin/python + +import functional_general_test +import misc_methods +from nose.tools import assert_equal +from nose.tools import assert_not_equal +from nose.tools import assert_raises +from nose.tools import raises + + +class ToggleFilter_Test(functional_general_test.CGeneralFunctional_Test): + + def setUp(self): + pass + + def test_ipv4_gen(self): + pass + + def tearDown(self): + pass -- cgit From 6adf866fc403829d5e24603280c6c6917b9fc357 Mon Sep 17 00:00:00 2001 From: Dan Klein Date: Fri, 8 Apr 2016 23:01:33 +0300 Subject: fixed import issue in test (ugly fix for now) --- scripts/automation/regression/functional_tests/filters_test.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'scripts/automation/regression/functional_tests') diff --git a/scripts/automation/regression/functional_tests/filters_test.py b/scripts/automation/regression/functional_tests/filters_test.py index 5479a70c..cf2c8148 100644 --- a/scripts/automation/regression/functional_tests/filters_test.py +++ b/scripts/automation/regression/functional_tests/filters_test.py @@ -1,7 +1,14 @@ #!/router/bin/python import functional_general_test -import misc_methods +#HACK FIX ME START +import sys +import os + +CURRENT_PATH = os.path.dirname(os.path.realpath(__file__)) +sys.path.append(os.path.abspath(os.path.join(CURRENT_PATH, '../../trex_control_plane/common'))) +#HACK FIX ME END +import filters from nose.tools import assert_equal from nose.tools import assert_not_equal from nose.tools import assert_raises -- cgit From 9e63f57a80722751221e18ae1e42a7f7ac4983ab Mon Sep 17 00:00:00 2001 From: Dan Klein Date: Sat, 9 Apr 2016 01:08:51 +0300 Subject: added multiple toggle option all test passed! --- .../regression/functional_tests/filters_test.py | 86 +++++++++++++++++++++- 1 file changed, 83 insertions(+), 3 deletions(-) (limited to 'scripts/automation/regression/functional_tests') diff --git a/scripts/automation/regression/functional_tests/filters_test.py b/scripts/automation/regression/functional_tests/filters_test.py index cf2c8148..b45b98bb 100644 --- a/scripts/automation/regression/functional_tests/filters_test.py +++ b/scripts/automation/regression/functional_tests/filters_test.py @@ -12,16 +12,96 @@ import filters from nose.tools import assert_equal from nose.tools import assert_not_equal from nose.tools import assert_raises +from nose.tools import assert_true, assert_false from nose.tools import raises class ToggleFilter_Test(functional_general_test.CGeneralFunctional_Test): def setUp(self): - pass + self.list_db = [1, 2, 3, 4, 5] + self.set_db = {1, 2, 3, 4, 5} + self.tuple_db = (1, 2, 3, 4, 5) + self.dict_db = {str(x): x**2 + for x in range(5)} + + def test_init_with_dict(self): + toggle_filter = filters.ToggleFilter(self.dict_db) + assert_equal(toggle_filter._toggle_db, set(self.dict_db.keys())) + assert_equal(toggle_filter.filter_items(), self.dict_db) + + + def test_init_with_list(self): + toggle_filter = filters.ToggleFilter(self.list_db) + assert_equal(toggle_filter._toggle_db, set(self.list_db)) + assert_equal(toggle_filter.filter_items(), self.list_db) + + def test_init_with_set(self): + toggle_filter = filters.ToggleFilter(self.set_db) + assert_equal(toggle_filter._toggle_db, self.set_db) + assert_equal(toggle_filter.filter_items(), self.set_db) + + def test_init_with_tuple(self): + toggle_filter = filters.ToggleFilter(self.tuple_db) + assert_equal(toggle_filter._toggle_db, set(self.tuple_db)) + assert_equal(toggle_filter.filter_items(), self.tuple_db) + + @raises(TypeError) + def test_init_with_non_iterable(self): + toggle_filter = filters.ToggleFilter(15) + + def test_dict_toggeling(self): + toggle_filter = filters.ToggleFilter(self.dict_db) + assert_false(toggle_filter.toggle_item("3")) + assert_equal(toggle_filter._toggle_db, {'0', '1', '2', '4'}) + assert_true(toggle_filter.toggle_item("3")) + assert_equal(toggle_filter._toggle_db, {'0', '1', '2', '3', '4'}) + assert_false(toggle_filter.toggle_item("2")) + assert_false(toggle_filter.toggle_item("4")) + self.dict_db.update({'5': 25, '6': 36}) + assert_true(toggle_filter.toggle_item("6")) + + assert_equal(toggle_filter.filter_items(), {'0': 0, '1': 1, '3': 9, '6': 36}) + + del self.dict_db['1'] + assert_equal(toggle_filter.filter_items(), {'0': 0, '3': 9, '6': 36}) + + def test_dict_toggeling_negative(self): + toggle_filter = filters.ToggleFilter(self.dict_db) + assert_raises(KeyError, toggle_filter.toggle_item, "100") + + def test_list_toggeling(self): + toggle_filter = filters.ToggleFilter(self.list_db) + assert_false(toggle_filter.toggle_item(3)) + assert_equal(toggle_filter._toggle_db, {1, 2, 4, 5}) + assert_true(toggle_filter.toggle_item(3)) + assert_equal(toggle_filter._toggle_db, {1, 2, 3, 4, 5}) + assert_false(toggle_filter.toggle_item(2)) + assert_false(toggle_filter.toggle_item(4)) + self.list_db.extend([6 ,7]) + assert_true(toggle_filter.toggle_item(6)) + + assert_equal(toggle_filter.filter_items(), [1, 3 , 5, 6]) + + self.list_db.remove(1) + assert_equal(toggle_filter.filter_items(), [3, 5, 6]) + + def test_list_toggeliing_negative(self): + toggle_filter = filters.ToggleFilter(self.list_db) + assert_raises(KeyError, toggle_filter.toggle_item, 10) + + def test_toggle_multiple_items(self): + toggle_filter = filters.ToggleFilter(self.list_db) + assert_false(toggle_filter.toggle_items(1, 3, 5)) + assert_equal(toggle_filter._toggle_db, {2, 4}) + assert_true(toggle_filter.toggle_items(1, 5)) + assert_equal(toggle_filter._toggle_db, {1, 2, 4, 5}) + + def test_dont_show_after_init(self): + toggle_filter = filters.ToggleFilter(self.list_db, show_by_default = False) + assert_equal(toggle_filter._toggle_db, set()) + assert_equal(toggle_filter.filter_items(), []) - def test_ipv4_gen(self): - pass def tearDown(self): pass -- cgit From 3bafb0394c07ef2abb4ce34c7fb4ec01eb09f2df Mon Sep 17 00:00:00 2001 From: Dan Klein Date: Tue, 19 Apr 2016 01:44:04 +0300 Subject: All unit tests passes with both python 2 and python 3. Added more documentation to the ToggleFilter class. --- scripts/automation/regression/functional_tests/filters_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'scripts/automation/regression/functional_tests') diff --git a/scripts/automation/regression/functional_tests/filters_test.py b/scripts/automation/regression/functional_tests/filters_test.py index b45b98bb..abb92999 100644 --- a/scripts/automation/regression/functional_tests/filters_test.py +++ b/scripts/automation/regression/functional_tests/filters_test.py @@ -86,7 +86,7 @@ class ToggleFilter_Test(functional_general_test.CGeneralFunctional_Test): self.list_db.remove(1) assert_equal(toggle_filter.filter_items(), [3, 5, 6]) - def test_list_toggeliing_negative(self): + def test_list_toggling_negative(self): toggle_filter = filters.ToggleFilter(self.list_db) assert_raises(KeyError, toggle_filter.toggle_item, 10) -- cgit