| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| from otava.util import ( |
| insert_multiple, |
| interpolate, |
| merge_dict_list, |
| merge_dicts, |
| merge_sorted, |
| remove_common_prefix, |
| sliding_window, |
| ) |
| |
| |
| def test_merge_sorted(): |
| assert merge_sorted([]) == [] |
| assert merge_sorted([[]]) == [] |
| assert merge_sorted([[1]]) == [1] |
| assert merge_sorted([[1], [1]]) == [1] |
| assert merge_sorted([[1], [2]]) == [1, 2] |
| assert merge_sorted([[2], [1]]) == [1, 2] |
| assert merge_sorted([[3, 2, 1], []]) == [1, 2, 3] |
| assert merge_sorted([[1, 3, 4], [1, 2]]) == [1, 2, 3, 4] |
| |
| |
| def test_remove_common_prefix(): |
| assert remove_common_prefix([""]) == [""] |
| assert remove_common_prefix(["foo"]) == ["foo"] |
| assert remove_common_prefix(["foo", "bar"]) == ["foo", "bar"] |
| assert remove_common_prefix(["foo.1", "foo.2"]) == ["1", "2"] |
| assert remove_common_prefix(["foo.bar.1", "foo.bar.2", "foo.3"]) == ["bar.1", "bar.2", "3"] |
| assert remove_common_prefix(["a/b", "a/c"], "/") == ["b", "c"] |
| |
| |
| def test_insert_multiple(): |
| assert insert_multiple(["a", "b", "c"], ["-"], []) == ["a", "b", "c"] |
| assert insert_multiple(["a", "b", "c"], ["-"], [1]) == ["a", "-", "b", "c"] |
| assert insert_multiple(["a", "b", "c"], ["0", "1", "2"], [0, 1, 2]) == [ |
| "0", |
| "a", |
| "1", |
| "b", |
| "2", |
| "c", |
| ] |
| |
| |
| def test_sliding_window(): |
| collection = [0, 1] |
| iter = sliding_window(collection, 3) |
| assert next(iter, None) is None |
| |
| collection = [0, 1, 2, 3, 4] |
| iter = sliding_window(collection, 3) |
| assert next(iter) == (0, 1, 2) |
| assert next(iter) == (1, 2, 3) |
| assert next(iter) == (2, 3, 4) |
| assert next(iter, None) is None |
| |
| |
| def test_merge_dicts(): |
| assert merge_dicts({"a": 1}, {"b": 2}) == {"a": 1, "b": 2} |
| assert merge_dicts({"c": 1, "b": 1, "a": 1}, {"b": 2, "a": 2}) == {"c": 1, "b": 2, "a": 2} |
| assert merge_dicts({"a": 1}, {"a": 2}) == {"a": 2} |
| assert merge_dicts({"a": [1, 2]}, {"a": [3]}) == {"a": [1, 2, 3]} |
| assert merge_dicts({"a": {1, 2}}, {"a": {2, 3}}) == {"a": {1, 2, 3}} |
| assert merge_dicts({"a": {"b": [1, 2]}}, {"a": {"b": [3]}}) == {"a": {"b": [1, 2, 3]}} |
| |
| |
| def test_dict_list(): |
| d1 = {"a": 1} |
| d2 = {"a": 2} |
| d3 = {"b": 3} |
| assert merge_dict_list([d1, d2, d3]) == {"a": 2, "b": 3} |
| |
| |
| def test_interpolate(): |
| s = "name1:%{NAME_1}, name2:%{NAME_2}" |
| assert interpolate(s, {"NAME_1": ["foo"], "NAME_2": ["bar"]}) == ["name1:foo, name2:bar"] |
| assert interpolate(s, {"NAME_1": ["foo", "bar"], "NAME_2": ["null"]}) == [ |
| "name1:foo, name2:null", |
| "name1:bar, name2:null", |
| ] |