1# Copyright 2018 The Bazel Authors. All rights reserved. 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14"""Unit tests for types.bzl.""" 15 16load("//lib:new_sets.bzl", "sets") 17load("//lib:types.bzl", "types") 18load("//lib:unittest.bzl", "asserts", "unittest") 19 20def _a_function(): 21 """A dummy function for testing.""" 22 pass 23 24def _is_string_test(ctx): 25 """Unit tests for types.is_string.""" 26 27 env = unittest.begin(ctx) 28 29 asserts.true(env, types.is_string("")) 30 asserts.true(env, types.is_string("string")) 31 32 asserts.false(env, types.is_string(4)) 33 asserts.false(env, types.is_string([1])) 34 asserts.false(env, types.is_string({})) 35 asserts.false(env, types.is_string(())) 36 asserts.false(env, types.is_string(True)) 37 asserts.false(env, types.is_string(None)) 38 asserts.false(env, types.is_string(_a_function)) 39 asserts.false(env, types.is_string(depset())) 40 41 return unittest.end(env) 42 43is_string_test = unittest.make(_is_string_test) 44 45def _is_bool_test(ctx): 46 """Unit tests for types.is_bool.""" 47 48 env = unittest.begin(ctx) 49 50 asserts.true(env, types.is_bool(True)) 51 asserts.true(env, types.is_bool(False)) 52 53 asserts.false(env, types.is_bool(4)) 54 asserts.false(env, types.is_bool([1])) 55 asserts.false(env, types.is_bool({})) 56 asserts.false(env, types.is_bool(())) 57 asserts.false(env, types.is_bool("")) 58 asserts.false(env, types.is_bool(None)) 59 asserts.false(env, types.is_bool(_a_function)) 60 asserts.false(env, types.is_bool(depset())) 61 62 return unittest.end(env) 63 64is_bool_test = unittest.make(_is_bool_test) 65 66def _is_list_test(ctx): 67 """Unit tests for types.is_list.""" 68 69 env = unittest.begin(ctx) 70 71 asserts.true(env, types.is_list([])) 72 asserts.true(env, types.is_list([1])) 73 74 asserts.false(env, types.is_list(4)) 75 asserts.false(env, types.is_list("s")) 76 asserts.false(env, types.is_list({})) 77 asserts.false(env, types.is_list(())) 78 asserts.false(env, types.is_list(True)) 79 asserts.false(env, types.is_list(None)) 80 asserts.false(env, types.is_list(_a_function)) 81 asserts.false(env, types.is_list(depset())) 82 83 return unittest.end(env) 84 85is_list_test = unittest.make(_is_list_test) 86 87def _is_none_test(ctx): 88 """Unit tests for types.is_none.""" 89 90 env = unittest.begin(ctx) 91 92 asserts.true(env, types.is_none(None)) 93 94 asserts.false(env, types.is_none(4)) 95 asserts.false(env, types.is_none("s")) 96 asserts.false(env, types.is_none({})) 97 asserts.false(env, types.is_none(())) 98 asserts.false(env, types.is_none(True)) 99 asserts.false(env, types.is_none([])) 100 asserts.false(env, types.is_none([1])) 101 asserts.false(env, types.is_none(_a_function)) 102 asserts.false(env, types.is_none(depset())) 103 104 return unittest.end(env) 105 106is_none_test = unittest.make(_is_none_test) 107 108def _is_int_test(ctx): 109 """Unit tests for types.is_int.""" 110 111 env = unittest.begin(ctx) 112 113 asserts.true(env, types.is_int(1)) 114 asserts.true(env, types.is_int(-1)) 115 116 asserts.false(env, types.is_int("s")) 117 asserts.false(env, types.is_int({})) 118 asserts.false(env, types.is_int(())) 119 asserts.false(env, types.is_int(True)) 120 asserts.false(env, types.is_int([])) 121 asserts.false(env, types.is_int([1])) 122 asserts.false(env, types.is_int(None)) 123 asserts.false(env, types.is_int(_a_function)) 124 asserts.false(env, types.is_int(depset())) 125 126 return unittest.end(env) 127 128is_int_test = unittest.make(_is_int_test) 129 130def _is_tuple_test(ctx): 131 """Unit tests for types.is_tuple.""" 132 133 env = unittest.begin(ctx) 134 135 asserts.true(env, types.is_tuple(())) 136 asserts.true(env, types.is_tuple((1,))) 137 138 asserts.false(env, types.is_tuple(1)) 139 asserts.false(env, types.is_tuple("s")) 140 asserts.false(env, types.is_tuple({})) 141 asserts.false(env, types.is_tuple(True)) 142 asserts.false(env, types.is_tuple([])) 143 asserts.false(env, types.is_tuple([1])) 144 asserts.false(env, types.is_tuple(None)) 145 asserts.false(env, types.is_tuple(_a_function)) 146 asserts.false(env, types.is_tuple(depset())) 147 148 return unittest.end(env) 149 150is_tuple_test = unittest.make(_is_tuple_test) 151 152def _is_dict_test(ctx): 153 """Unit tests for types.is_dict.""" 154 155 env = unittest.begin(ctx) 156 157 asserts.true(env, types.is_dict({})) 158 asserts.true(env, types.is_dict({"key": "value"})) 159 160 asserts.false(env, types.is_dict(1)) 161 asserts.false(env, types.is_dict("s")) 162 asserts.false(env, types.is_dict(())) 163 asserts.false(env, types.is_dict(True)) 164 asserts.false(env, types.is_dict([])) 165 asserts.false(env, types.is_dict([1])) 166 asserts.false(env, types.is_dict(None)) 167 asserts.false(env, types.is_dict(_a_function)) 168 asserts.false(env, types.is_dict(depset())) 169 170 return unittest.end(env) 171 172is_dict_test = unittest.make(_is_dict_test) 173 174def _is_function_test(ctx): 175 """Unit tests for types.is_function.""" 176 177 env = unittest.begin(ctx) 178 179 asserts.true(env, types.is_function(_a_function)) 180 181 asserts.false(env, types.is_function({})) 182 asserts.false(env, types.is_function(1)) 183 asserts.false(env, types.is_function("s")) 184 asserts.false(env, types.is_function(())) 185 asserts.false(env, types.is_function(True)) 186 asserts.false(env, types.is_function([])) 187 asserts.false(env, types.is_function([1])) 188 asserts.false(env, types.is_function(None)) 189 asserts.false(env, types.is_function(depset())) 190 191 return unittest.end(env) 192 193is_function_test = unittest.make(_is_function_test) 194 195def _is_depset_test(ctx): 196 """Unit tests for types.is_depset.""" 197 198 env = unittest.begin(ctx) 199 200 asserts.true(env, types.is_depset(depset())) 201 asserts.true(env, types.is_depset(depset(["foo"]))) 202 asserts.true(env, types.is_depset( 203 depset(["foo"], transitive = [depset(["bar", "baz"])]), 204 )) 205 206 asserts.false(env, types.is_depset({})) 207 asserts.false(env, types.is_depset(1)) 208 asserts.false(env, types.is_depset("s")) 209 asserts.false(env, types.is_depset(())) 210 asserts.false(env, types.is_depset(True)) 211 asserts.false(env, types.is_depset([])) 212 asserts.false(env, types.is_depset([1])) 213 asserts.false(env, types.is_depset(None)) 214 215 return unittest.end(env) 216 217is_depset_test = unittest.make(_is_depset_test) 218 219def _is_set_test(ctx): 220 """Unit test for types.is_set.""" 221 env = unittest.begin(ctx) 222 223 asserts.true(env, types.is_set(sets.make())) 224 asserts.true(env, types.is_set(sets.make([1]))) 225 asserts.false(env, types.is_set(None)) 226 asserts.false(env, types.is_set({})) 227 asserts.false(env, types.is_set(struct(foo = 1))) 228 asserts.false(env, types.is_set(struct(_values = "not really values"))) 229 230 return unittest.end(env) 231 232is_set_test = unittest.make(_is_set_test) 233 234def types_test_suite(): 235 """Creates the test targets and test suite for types.bzl tests.""" 236 unittest.suite( 237 "types_tests", 238 is_list_test, 239 is_string_test, 240 is_bool_test, 241 is_none_test, 242 is_int_test, 243 is_tuple_test, 244 is_dict_test, 245 is_function_test, 246 is_depset_test, 247 is_set_test, 248 ) 249