1# -*- coding: utf-8 -*- 2 3import datetime 4import decimal 5import operator 6import re 7 8import pydash as _ 9 10from . import fixtures 11from .fixtures import parametrize 12 13 14@parametrize('value,other,expected', [ 15 ('a', 'a', True), 16 (None, None, True), 17 (None, '', False), 18 (1, str(1), False) 19]) 20def test_eq(value, other, expected): 21 assert _.eq(value, other) == expected 22 23 24@parametrize('case,expected', [ 25 ((2, 1), True), 26 ((2.5, 2.3), True), 27 ((1, 2), False), 28 ((2.3, 2.5), False), 29 ((1, 1), False), 30]) 31def test_gt(case, expected): 32 assert _.gt(*case) == expected 33 34 35@parametrize('case,expected', [ 36 ((2, 1), True), 37 ((2.5, 2.3), True), 38 ((1, 2), False), 39 ((2.3, 2.5), False), 40 ((1, 1), True), 41]) 42def test_gte(case, expected): 43 assert _.gte(*case) == expected 44 45 46@parametrize('case,expected', [ 47 ((2, 1), False), 48 ((2.5, 2.3), False), 49 ((1, 2), True), 50 ((2.3, 2.5), True), 51 ((1, 1), False), 52]) 53def test_lt(case, expected): 54 assert _.lt(*case) == expected 55 56 57@parametrize('case,expected', [ 58 ((2, 1), False), 59 ((2.5, 2.3), False), 60 ((1, 2), True), 61 ((2.3, 2.5), True), 62 ((1, 1), True), 63]) 64def test_lte(case, expected): 65 assert _.lte(*case) == expected 66 67 68@parametrize('case,expected', [ 69 ((3, 2, 4), True), 70 ((4, 8), True), 71 ((4, 2), False), 72 ((2, 2), False), 73 ((1.2, 2), True), 74 ((5.2, 4), False), 75 (('', 5), False), 76 ((2, ''), False), 77 ((-1, -2, ''), True), 78]) 79def test_in_range(case, expected): 80 assert _.in_range(*case) == expected 81 82 83@parametrize('case,expected', [ 84 ([], True), 85 ({}, True), 86 ('', True), 87 (0, False), 88 (True, False), 89]) 90def test_is_associative(case, expected): 91 assert _.is_associative(case) == expected 92 93 94@parametrize('case,expected', [ 95 ('', True), 96 ('\n', True), 97 (' ', True), 98 ('a', False), 99]) 100def test_is_blank(case, expected): 101 assert _.is_blank(case) == expected 102 103 104@parametrize('case,expected', [ 105 (True, True), 106 (False, True), 107 (0, False), 108 ('', False), 109]) 110def test_is_boolean(case, expected): 111 assert _.is_boolean(case) == expected 112 113 114@parametrize('case,expected', [ 115 (list, True), 116 (dict, True), 117 ([].append, True), 118 ({}.update, True), 119 (1, True), 120 (True, True), 121 (None, True), 122 (datetime, False), 123 (parametrize, False), 124 ('a', False), 125 (lambda: None, False), 126]) 127def test_is_builtin(case, expected): 128 assert _.is_builtin(case) == expected 129 130 131@parametrize('case,expected', [ 132 (datetime.date.today(), True), 133 (datetime.datetime.today(), True), 134 ('2014-01-01', False), 135 ('2014-01-01T00:00:00', False), 136 (1, False) 137]) 138def test_is_date(case, expected): 139 assert _.is_date(case) == expected 140 141 142@parametrize('case,expected', [ 143 ([3, 2, 1], True), 144 ([6, 5, 5], True), 145 (0, True), 146 ([5, 4, 4, 3, 1], True), 147 ([5, 4, 4, 5, 4, 3], False) 148]) 149def test_is_decreasing(case, expected): 150 assert _.is_decreasing(case) == expected 151 152 153@parametrize('case,expected', [ 154 ({}, True), 155 ([], False), 156 (1, False), 157 ('a', False), 158 (iter([]), False), 159 (iter({}), False) 160]) 161def test_is_dict(case, expected): 162 assert _.is_dict(case) == expected 163 164 165@parametrize('case,expected', [ 166 (True, True), 167 (0, True), 168 (123.45, True), 169 ('', True), 170 ({}, True), 171 ([], True), 172 (False, True), 173 (None, True), 174 ({'a': 1}, False), 175 ([1], False), 176 ('Hello', False), 177 (['Hello', 'World'], False), 178]) 179def test_is_empty(case, expected): 180 assert _.is_empty(case) == expected 181 182 183@parametrize('case,expected', [ 184 ((1, 1), True), 185 ((1, 2), False), 186 (('1', '1'), True), 187 (('1', '2'), False), 188 (([1], {'a': 1}), False), 189 (({'a': 1}, {'a': 1}), True), 190 (({'a': 1}, {'b': 1}), False), 191 (([1, 2, 3], [1, 2, 3]), True), 192 (([1, 2, 3], [1, 2]), False), 193 (([1, 2], [1, 2, 3]), False), 194 (([1, 2, 3], [1, 2]), False), 195 (([1, 2], [1, 2, 3]), False), 196 ((['hello', 'goodbye'], ['hi', 'goodbye']), False) 197]) 198def test_is_equal(case, expected): 199 assert _.is_equal(*case) == expected 200 201 202@parametrize('case,expected', [ 203 ((1, 1, None), True), 204 ((1, 2, None), False), 205 (('1', '1', None), True), 206 (('1', '2', None), False), 207 (([1], {'a': 1}, None), False), 208 (([1], {'a': 1}, lambda a, b: True), True), 209 (({'a': 1}, {'a': 1}, None), True), 210 (({'a': 1}, {'b': 1}, lambda a, b: None if isinstance(a, dict) else True), 211 False), 212 (([1, 2, 3], [1, 2, 3], None), True), 213 (([1, 2, 3], [1, 2], None), False), 214 (([1, 2], [1, 2, 3], None), False), 215 (([1, 2, 3], [1, 2], lambda a, b: None if isinstance(a, list) else True), 216 False), 217 (([1, 2], [1, 2, 3], lambda a, b: None if isinstance(a, list) else True), 218 False), 219 ((['hello', 'goodbye'], ['hi', 'goodbye'], fixtures.is_equal_iteratee0), 220 True) 221]) 222def test_is_equal_with(case, expected): 223 assert _.is_equal_with(*case) == expected 224 225 226@parametrize('case,expected', [ 227 (Exception(), True), 228 ({}, False), 229 ([], False) 230]) 231def test_is_error(case, expected): 232 assert _.is_error(case) == expected 233 234 235@parametrize('case,expected', [ 236 (2, True), 237 (16, True), 238 (1, False), 239 (3.0, False), 240 (3.5, False), 241 (None, False), 242]) 243def test_is_even(case, expected): 244 assert _.is_even(case) == expected 245 246 247@parametrize('case,expected', [ 248 (1.0, True), 249 (3.245, True), 250 (1, False), 251 (True, False), 252 ('', False), 253]) 254def test_is_float(case, expected): 255 assert _.is_float(case) == expected 256 257 258@parametrize('case,expected', [ 259 (lambda x: x + 1, True), 260 ('Hello, world!', False), 261]) 262def test_is_function(case, expected): 263 assert _.is_function(case) == expected 264 265 266@parametrize('case,expected', [ 267 ([1, 2, 3], True), 268 ([5, 5, 6], True), 269 (0, True), 270 ([1, 2, 3, 4, 4, 5], True), 271 ([1, 2, 3, 4, 4, 3], False) 272]) 273def test_is_increasing(case, expected): 274 assert _.is_increasing(case) == expected 275 276 277@parametrize('case,expected', [ 278 ([], True), 279 ('', True), 280 ((), True), 281 ({}, False), 282 (1, False), 283 (None, False), 284]) 285def test_is_indexed(case, expected): 286 assert _.is_indexed(case) == expected 287 288 289@parametrize('case,expected', [ 290 ((1, int), True), 291 ((1.0, float), True), 292 (([], (list, str)), True), 293 (([], dict), False), 294 ((True, float), False), 295]) 296def test_is_instance_of(case, expected): 297 assert _.is_instance_of(*case) == expected 298 299 300@parametrize('case,expected', [ 301 (1, True), 302 (2, True), 303 (1.0, False), 304 (True, False), 305 (None, False), 306 ([], False), 307]) 308def test_is_integer(case, expected): 309 assert _.is_integer(case) == expected 310 311 312@parametrize('case,expected', [ 313 ([], True), 314 ({}, True), 315 ((), True), 316 ('a', True), 317 (5, False), 318 (None, False), 319]) 320def test_is_iterable(case, expected): 321 assert _.is_iterable(case) == expected 322 323 324@parametrize('case,expected', [ 325 ('{"one": 1, "two": {"three": "3"}, "four": [4]}', True), 326 ({"one": 1, "two": {"three": "3"}, "four": [4]}, False), 327 ('', False), 328 (1, False), 329 (True, False), 330]) 331def test_is_json(case, expected): 332 assert _.is_json(case) == expected 333 334 335@parametrize('case,expected', [ 336 ([1, 2, 3], True), 337 ({}, False), 338]) 339def test_is_list(case, expected): 340 assert _.is_list(case) == expected 341 342 343@parametrize('case,expected', [ 344 (({'name': 'fred', 'age': 40}, {'age': 40}), True), 345 (({'name': 'fred', 'age': 40}, {'age': 40, 'active': True}), False), 346 (([1, 2, 3], [1, 2]), True), 347 (([1, 2, 3], [1, 2, 3, 4]), False), 348 (({}, {}), True), 349 (({'a': 1}, {}), True), 350 (([], []), True), 351 (([1], []), True), 352]) 353def test_is_match(case, expected): 354 assert _.is_match(*case) == expected 355 356 357@parametrize('case,expected', [ 358 (([1, 2], 359 [2, 4], 360 lambda a, b: None if isinstance(a, list) else b == a + a), 361 True), 362 (([1, 2], 363 [2, 4], 364 lambda a, b, key: a == b == key), 365 False), 366 (([0, 1], 367 [0, 1], 368 lambda a, b, key: a == b == key), 369 True), 370]) 371def test_is_match_with(case, expected): 372 assert _.is_match_with(*case) == expected 373 374 375@parametrize('case,expected', [ 376 (([1, 2, 3], operator.le), True), 377 (([3, 2, 1], operator.ge), True), 378 (([1, 1, 2], operator.lt), False), 379 (([3, 3, 2], operator.gt), False), 380]) 381def test_is_monotone(case, expected): 382 assert _.is_monotone(*case) == expected 383 384 385@parametrize('case,expected', [ 386 (0, False), 387 (123456789123456789123456789, False), 388 (123.45, False), 389 (decimal.Decimal(1), False), 390 ('1', True) 391]) 392def test_is_nan(case, expected): 393 assert _.is_nan(case) == expected 394 395 396@parametrize('case,expected', [ 397 (-1, True), 398 (-1.25, True), 399 (-0.1, True), 400 (0, False), 401 (1, False), 402 (True, False), 403 (False, False) 404]) 405def test_is_negative(case, expected): 406 assert _.is_negative(case) == expected 407 408 409@parametrize('case,expected', [ 410 (None, True), 411 (0, False), 412]) 413def test_is_none(case, expected): 414 assert _.is_none(case) == expected 415 416 417@parametrize('case,expected', [ 418 (0, True), 419 (123456789123456789123456789, True), 420 (123.45, True), 421 (decimal.Decimal(1), True), 422 ('1', False), 423 (True, False), 424 (False, False), 425]) 426def test_is_number(case, expected): 427 assert _.is_number(case) == expected 428 429 430@parametrize('case,expected', [ 431 ({}, True), 432 ([], True), 433 (1, False), 434 ('a', False), 435 (iter([]), False), 436 (iter({}), False) 437]) 438def test_is_object(case, expected): 439 assert _.is_object(case) == expected 440 441 442@parametrize('case,expected', [ 443 (1, True), 444 (3.0, True), 445 (3.5, True), 446 (2, False), 447 (16, False), 448 (None, False), 449]) 450def test_is_odd(case, expected): 451 assert _.is_odd(case) == expected 452 453 454@parametrize('case,expected', [ 455 (1, True), 456 (1.25, True), 457 (0.1, True), 458 (-1, False), 459 (0, False), 460 (True, False), 461 (False, False) 462]) 463def test_is_positive(case, expected): 464 assert _.is_positive(case) == expected 465 466 467@parametrize('case,expected', [ 468 (re.compile(''), True), 469 ('', False), 470 ('Hello, world!', False), 471 (1, False), 472 ({}, False), 473 ([], False), 474 (None, False) 475]) 476def test_is_reg_exp(case, expected): 477 assert _.is_reg_exp(case) == expected 478 479 480@parametrize('case,expected', [ 481 (set(), True), 482 ([1, 2, 3], False) 483]) 484def test_is_set(case, expected): 485 assert _.is_set(case) == expected 486 487 488@parametrize('case,expected', [ 489 ([1, 2, 3], False), 490 ([3, 2, 1], True), 491 ([1, 1, 2], False), 492 ([3, 3, 2], False), 493]) 494def test_is_strictly_decreasing(case, expected): 495 assert _.is_strictly_decreasing(case) == expected 496 497 498@parametrize('case,expected', [ 499 ([1, 2, 3], True), 500 ([3, 2, 1], False), 501 ([1, 1, 2], False), 502 ([3, 3, 2], False), 503]) 504def test_is_strictly_increasing(case, expected): 505 assert _.is_strictly_increasing(case) == expected 506 507 508@parametrize('case,expected', [ 509 ('', True), 510 ('Hello, world!', True), 511 (1, False), 512 ({}, False), 513 ([], False), 514 (None, False) 515]) 516def test_is_string(case, expected): 517 assert _.is_string(case) == expected 518 519 520@parametrize('case,expected', [ 521 ((), True), 522 ([], False), 523 ({}, False), 524]) 525def test_is_tuple(case, expected): 526 assert _.is_tuple(case) == expected 527 528 529@parametrize('case,expected', [ 530 (0, True), 531 (0.0, False), 532 ('', False), 533 (True, False), 534 (False, False), 535]) 536def test_is_zero(case, expected): 537 assert _.is_zero(case) == expected 538