blob: 4d650c74ca3abd3ceb6b0e5b4786d208c4844be0 [file] [log] [blame]
# 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",
]