| # Copyright 2017 The Bazel Authors. All rights reserved. |
| # |
| # Licensed 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. |
| |
| """Unit tests for collections.bzl.""" |
| |
| load("//lib:collections.bzl", "collections") |
| load("//lib:unittest.bzl", "asserts", "unittest") |
| |
| def _after_each_test(ctx): |
| """Unit tests for collections.after_each.""" |
| env = unittest.begin(ctx) |
| |
| asserts.equals(env, [], collections.after_each("1", [])) |
| asserts.equals(env, ["a", "1"], collections.after_each("1", ["a"])) |
| asserts.equals( |
| env, |
| ["a", "1", "b", "1"], |
| collections.after_each("1", ["a", "b"]), |
| ) |
| |
| # We don't care what type the separator is, we just put it there; so None |
| # should be just as valid as anything else. |
| asserts.equals( |
| env, |
| ["a", None, "b", None], |
| collections.after_each(None, ["a", "b"]), |
| ) |
| |
| return unittest.end(env) |
| |
| after_each_test = unittest.make(_after_each_test) |
| |
| def _before_each_test(ctx): |
| """Unit tests for collections.before_each.""" |
| env = unittest.begin(ctx) |
| |
| asserts.equals(env, [], collections.before_each("1", [])) |
| asserts.equals(env, ["1", "a"], collections.before_each("1", ["a"])) |
| asserts.equals( |
| env, |
| ["1", "a", "1", "b"], |
| collections.before_each("1", ["a", "b"]), |
| ) |
| |
| # We don't care what type the separator is, we just put it there; so None |
| # should be just as valid as anything else. |
| asserts.equals( |
| env, |
| [None, "a", None, "b"], |
| collections.before_each(None, ["a", "b"]), |
| ) |
| |
| return unittest.end(env) |
| |
| before_each_test = unittest.make(_before_each_test) |
| |
| def _uniq_test(ctx): |
| env = unittest.begin(ctx) |
| asserts.equals(env, collections.uniq([0, 1, 2, 3]), [0, 1, 2, 3]) |
| asserts.equals(env, collections.uniq([]), []) |
| asserts.equals(env, collections.uniq([1, 1, 1, 1, 1]), [1]) |
| asserts.equals( |
| env, |
| collections.uniq([ |
| True, |
| 5, |
| "foo", |
| 5, |
| False, |
| struct(a = 1), |
| True, |
| struct(b = 2), |
| "bar", |
| (1,), |
| "foo", |
| struct(a = 1), |
| (1,), |
| ]), |
| [ |
| True, |
| 5, |
| "foo", |
| False, |
| struct(a = 1), |
| struct(b = 2), |
| "bar", |
| (1,), |
| ], |
| ) |
| |
| return unittest.end(env) |
| |
| uniq_test = unittest.make(_uniq_test) |
| |
| def collections_test_suite(): |
| """Creates the test targets and test suite for collections.bzl tests.""" |
| unittest.suite( |
| "collections_tests", |
| after_each_test, |
| before_each_test, |
| uniq_test, |
| ) |