PageRenderTime 55ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/IronPython_Main/Languages/IronPython/Tests/test_conditional.py

#
Python | 1154 lines | 1111 code | 15 blank | 28 comment | 67 complexity | 4bab0f1fc7b7cd9c05128cdd011b6b57 MD5 | raw file
Possible License(s): GPL-2.0, MPL-2.0-no-copyleft-exception, CPL-1.0, CC-BY-SA-3.0, BSD-3-Clause, ISC, AGPL-3.0, LGPL-2.1, Apache-2.0
  1. #####################################################################################
  2. #
  3. # Copyright (c) Microsoft Corporation. All rights reserved.
  4. #
  5. # This source code is subject to terms and conditions of the Apache License, Version 2.0. A
  6. # copy of the license can be found in the License.html file at the root of this distribution. If
  7. # you cannot locate the Apache License, Version 2.0, please send an email to
  8. # ironpy@microsoft.com. By using this source code in any fashion, you are agreeing to be bound
  9. # by the terms of the Apache License, Version 2.0.
  10. #
  11. # You must not remove this notice, or any other, from this software.
  12. #
  13. #
  14. #####################################################################################
  15. from iptest.assert_util import *
  16. import sys
  17. def test_simple():
  18. # Simple conditional true case
  19. Assert(100 if 1 else 200 == 100)
  20. # Simple conditional false case
  21. Assert(0 if 0 else 200 == 200)
  22. def test_multiple_assignment():
  23. # Conditional multiple assignment
  24. x, y, z, w, u = 1 if 0 else 2, 2 if 1 else 3, 3 if 10 else 4, 1 & 0 if 0 and 3 or 4 else 100, 1 and 0 if 0 and 3 or 4 & 0 else 100
  25. AreEqual((x,y,z,w,u), (2,2,3,0,100))
  26. def test_in_expressions():
  27. # combination of operators and conditional
  28. Assert(100 + 1 & 3 if 1 else 2 == 1)
  29. Assert(100 + (1 & 3 if 1 else 2) == 101)
  30. def test_if_else():
  31. # conditional in if-else
  32. x, y, z = 0,1,2
  33. if x if y else z:
  34. p = 100
  35. else:
  36. p = 200
  37. Assert(p == 200)
  38. def test_nested_conditionals():
  39. # nested conditionals
  40. if 0 if (0 if 100 else 1 ) else 10:
  41. x = 300
  42. else:
  43. x = 400
  44. Assert(x == 300)
  45. def test_conditionals_with_test_list_1():
  46. # conditionals with test-list #test1
  47. x,y,z = 1,2,3
  48. if 20 if (x,y,z == 1,2,3) else 0:
  49. x = 300
  50. else:
  51. x = 400
  52. Assert(x == 300)
  53. def test_conditionals_with_test_list_2():
  54. # conditionals with test-list #test2
  55. list = [[1 if 1 else 0,0 if 0 else 2,3],[4,5 if 1 and 1 else 0,8 if 0 and 1 else 6 & 7]]
  56. if 20 if (list == [[1,2,3],[4,5,7]]) else 0 if 1 else 200 :
  57. x = 300
  58. else:
  59. x = 400
  60. Assert(x == 400)
  61. def test_generator_expressions():
  62. #test for gen_for
  63. Assert(sum(x*x for x in range(10) if not x%2 if not x%3) == sum([x*x for x in range(10) if not x%6]))
  64. #test for gen_for gen_if combined
  65. Assert(sum(x*x for x in range(10) for x in range(5) if not x %2) == 200)
  66. def test_list_for():
  67. #test for list_for
  68. list = [10,20,30,40,50,60,70,80,90,100,110,120,130]
  69. mysum = 0
  70. for i in (0,1,2,3,4,5,6,7,8,9,10,11,12):
  71. mysum += list[i]
  72. Assert(mysum == 910)
  73. #test for list_for list_if combined
  74. list = [10,20,30,40,50,60,70,80,90,100,110,120,130]
  75. Assert(sum(list[i] if not i%2 else 0 for i in (0,1,2,3,4,5,6,7,8,9,10,11,12) if not i %3 if not 0) == 210)
  76. def test_errors():
  77. #test for null list
  78. AssertError(SyntaxError, compile, "mysum = 0;for i in 10:pass", "Error", "exec")
  79. # test for lambda function
  80. AssertError(SyntaxError, compile, "[f for f in 1, lambda x: x if x >= 0 else -1]", "", "exec")
  81. def test_conditional_in_lambda():
  82. try:
  83. list = [f for f in (1, lambda x: x if x >= 0 else -1)]
  84. list = [f for f in 1, lambda x: (x if x >= 0 else -1)]
  85. list = [f for f in 1, (lambda x: x if x >= 0 else -1)]
  86. except e:
  87. Assert(False, e.message)
  88. def test_conditional_return_types():
  89. '''
  90. 11491
  91. '''
  92. class OldK: pass
  93. class NewK(object): pass
  94. for x in [
  95. -2, -1, 0, 1, 2, 2**16,
  96. -2L, -1L, 0L, 1L, 2L, 2**32,
  97. 3.14,
  98. 2j,
  99. "", "abc",
  100. {}, {'a':'b'}, {'a':'b', 'c':'d'},
  101. [], [1], [1, 2],
  102. xrange(0), xrange(1), xrange(2),
  103. OldK, NewK, OldK(), NewK(),
  104. None, str, object,
  105. ]:
  106. temp = 0 if 0 else x
  107. AreEqual(temp, x)
  108. def test_conversions():
  109. AreEqual(1 if False else "Hello", "Hello")
  110. AreEqual("Hello" if False else 1, 1)
  111. AreEqual(1 if True else "Hello", 1)
  112. AreEqual("Hello" if False else "Goodbye", "Goodbye")
  113. if (1 if True else False):
  114. pass
  115. else:
  116. Fail("Expression incorrectly evaluated")
  117. def test_cp13299():
  118. true_conditions = [ 1, 1L, -1, -1L, True, 1.1, -1.1, "abc", int, 0.1, -0.1]
  119. false_conditions = [ 0, 0L, None, 0.0, -0, -0.0, False, (), [], ""]
  120. for condition in true_conditions:
  121. x = condition if condition else False
  122. AreEqual(x, condition)
  123. for condition in false_conditions:
  124. x = True if condition else condition
  125. AreEqual(x, condition)
  126. AreEqual(3.14 if True else 1, 3.14)
  127. AreEqual(3.14 if True else 1L, 3.14)
  128. AreEqual(3.14 if True else -1, 3.14)
  129. AreEqual(3.14 if True else True, 3.14)
  130. AreEqual(3.14 if True else 1.1, 3.14)
  131. AreEqual(3.14 if True else -1.1, 3.14)
  132. AreEqual(3.14 if True else "abc", 3.14)
  133. AreEqual(3.14 if True else int, 3.14)
  134. AreEqual(3.14 if True else 0, 3.14)
  135. AreEqual(3.14 if True else 0L, 3.14)
  136. AreEqual(3.14 if True else None, 3.14)
  137. AreEqual(3.14 if True else False, 3.14)
  138. AreEqual(3.14 if True else (), 3.14)
  139. AreEqual(3.14 if True else [[1]], 3.14)
  140. AreEqual(3.14 if True else u"", 3.14)
  141. AreEqual(1 if False else 3.14, 3.14)
  142. AreEqual(1L if False else 3.14, 3.14)
  143. AreEqual(-1 if False else 3.14, 3.14)
  144. AreEqual(True if False else 3.14, 3.14)
  145. AreEqual(1.1 if False else 3.14, 3.14)
  146. AreEqual(-1.1 if False else 3.14, 3.14)
  147. AreEqual("abc" if False else 3.14, 3.14)
  148. AreEqual(int if False else 3.14, 3.14)
  149. AreEqual(0 if False else 3.14, 3.14)
  150. AreEqual(0L if False else 3.14, 3.14)
  151. AreEqual(None if False else 3.14, 3.14)
  152. AreEqual(False if False else 3.14, 3.14)
  153. AreEqual(() if False else 3.14, 3.14)
  154. AreEqual([[1]] if False else 3.14, 3.14)
  155. AreEqual(u"" if False else 3.14, 3.14)
  156. def test_large_if():
  157. def f(value):
  158. if value:
  159. return 42
  160. elif value:
  161. raise Exception()
  162. elif value:
  163. pass
  164. elif value:
  165. pass
  166. elif value:
  167. pass
  168. elif value:
  169. pass
  170. elif value:
  171. pass
  172. elif value:
  173. pass
  174. elif value:
  175. pass
  176. elif value:
  177. pass
  178. elif value:
  179. pass
  180. elif value:
  181. pass
  182. elif value:
  183. pass
  184. elif value:
  185. pass
  186. elif value:
  187. pass
  188. elif value:
  189. pass
  190. elif value:
  191. pass
  192. elif value:
  193. pass
  194. elif value:
  195. pass
  196. elif value:
  197. pass
  198. elif value:
  199. pass
  200. elif value:
  201. pass
  202. elif value:
  203. pass
  204. elif value:
  205. pass
  206. elif value:
  207. pass
  208. elif value:
  209. pass
  210. elif value:
  211. pass
  212. elif value:
  213. pass
  214. elif value:
  215. pass
  216. elif value:
  217. pass
  218. elif value:
  219. pass
  220. elif value:
  221. pass
  222. elif value:
  223. pass
  224. elif value:
  225. pass
  226. elif value:
  227. pass
  228. elif value:
  229. pass
  230. elif value:
  231. pass
  232. elif value:
  233. pass
  234. elif value:
  235. pass
  236. elif value:
  237. pass
  238. elif value:
  239. pass
  240. elif value:
  241. pass
  242. elif value:
  243. pass
  244. elif value:
  245. pass
  246. elif value:
  247. pass
  248. elif value:
  249. pass
  250. elif value:
  251. pass
  252. elif value:
  253. pass
  254. elif value:
  255. pass
  256. elif value:
  257. pass
  258. elif value:
  259. pass
  260. elif value:
  261. pass
  262. elif value:
  263. pass
  264. elif value:
  265. pass
  266. elif value:
  267. pass
  268. elif value:
  269. pass
  270. elif value:
  271. pass
  272. elif value:
  273. pass
  274. elif value:
  275. pass
  276. elif value:
  277. pass
  278. elif value:
  279. pass
  280. elif value:
  281. pass
  282. elif value:
  283. pass
  284. elif value:
  285. pass
  286. elif value:
  287. pass
  288. elif value:
  289. pass
  290. elif value:
  291. pass
  292. elif value:
  293. pass
  294. elif value:
  295. pass
  296. elif value:
  297. pass
  298. elif value:
  299. pass
  300. elif value:
  301. pass
  302. elif value:
  303. pass
  304. elif value:
  305. pass
  306. elif value:
  307. pass
  308. elif value:
  309. pass
  310. elif value:
  311. pass
  312. elif value:
  313. pass
  314. elif value:
  315. pass
  316. elif value:
  317. pass
  318. elif value:
  319. pass
  320. elif value:
  321. pass
  322. elif value:
  323. pass
  324. elif value:
  325. pass
  326. elif value:
  327. pass
  328. elif value:
  329. pass
  330. elif value:
  331. pass
  332. elif value:
  333. pass
  334. elif value:
  335. pass
  336. elif value:
  337. pass
  338. elif value:
  339. pass
  340. elif value:
  341. pass
  342. elif value:
  343. pass
  344. elif value:
  345. pass
  346. elif value:
  347. pass
  348. elif value:
  349. pass
  350. elif value:
  351. pass
  352. elif value:
  353. pass
  354. elif value:
  355. pass
  356. elif value:
  357. pass
  358. elif value:
  359. pass
  360. elif value:
  361. pass
  362. elif value:
  363. pass
  364. elif value:
  365. pass
  366. elif value:
  367. pass
  368. elif value:
  369. pass
  370. elif value:
  371. pass
  372. elif value:
  373. pass
  374. elif value:
  375. pass
  376. elif value:
  377. pass
  378. elif value:
  379. pass
  380. elif value:
  381. pass
  382. elif value:
  383. pass
  384. elif value:
  385. pass
  386. elif value:
  387. pass
  388. elif value:
  389. pass
  390. elif value:
  391. pass
  392. elif value:
  393. pass
  394. elif value:
  395. pass
  396. elif value:
  397. pass
  398. elif value:
  399. pass
  400. elif value:
  401. pass
  402. elif value:
  403. pass
  404. elif value:
  405. pass
  406. elif value:
  407. pass
  408. elif value:
  409. pass
  410. elif value:
  411. pass
  412. elif value:
  413. pass
  414. elif value:
  415. pass
  416. elif value:
  417. pass
  418. elif value:
  419. pass
  420. elif value:
  421. pass
  422. elif value:
  423. pass
  424. elif value:
  425. pass
  426. elif value:
  427. pass
  428. elif value:
  429. pass
  430. elif value:
  431. pass
  432. elif value:
  433. pass
  434. elif value:
  435. pass
  436. elif value:
  437. pass
  438. elif value:
  439. pass
  440. elif value:
  441. pass
  442. elif value:
  443. pass
  444. elif value:
  445. pass
  446. elif value:
  447. pass
  448. elif value:
  449. pass
  450. elif value:
  451. pass
  452. elif value:
  453. pass
  454. elif value:
  455. pass
  456. elif value:
  457. pass
  458. elif value:
  459. pass
  460. elif value:
  461. pass
  462. elif value:
  463. pass
  464. elif value:
  465. pass
  466. elif value:
  467. pass
  468. elif value:
  469. pass
  470. elif value:
  471. pass
  472. elif value:
  473. pass
  474. elif value:
  475. pass
  476. elif value:
  477. pass
  478. elif value:
  479. pass
  480. elif value:
  481. pass
  482. elif value:
  483. pass
  484. elif value:
  485. pass
  486. elif value:
  487. pass
  488. elif value:
  489. pass
  490. elif value:
  491. pass
  492. elif value:
  493. pass
  494. elif value:
  495. pass
  496. elif value:
  497. pass
  498. elif value:
  499. pass
  500. elif value:
  501. pass
  502. elif value:
  503. pass
  504. elif value:
  505. pass
  506. elif value:
  507. pass
  508. elif value:
  509. pass
  510. elif value:
  511. pass
  512. elif value:
  513. pass
  514. elif value:
  515. pass
  516. elif value:
  517. pass
  518. elif value:
  519. pass
  520. elif value:
  521. pass
  522. elif value:
  523. pass
  524. elif value:
  525. pass
  526. elif value:
  527. pass
  528. elif value:
  529. pass
  530. elif value:
  531. pass
  532. elif value:
  533. pass
  534. elif value:
  535. pass
  536. elif value:
  537. pass
  538. elif value:
  539. pass
  540. elif value:
  541. pass
  542. elif value:
  543. pass
  544. elif value:
  545. pass
  546. elif value:
  547. pass
  548. elif value:
  549. pass
  550. elif value:
  551. pass
  552. elif value:
  553. pass
  554. elif value:
  555. pass
  556. elif value:
  557. pass
  558. elif value:
  559. pass
  560. elif value:
  561. pass
  562. elif value:
  563. pass
  564. elif value:
  565. pass
  566. elif value:
  567. pass
  568. elif value:
  569. pass
  570. elif value:
  571. pass
  572. elif value:
  573. pass
  574. elif value:
  575. pass
  576. elif value:
  577. pass
  578. elif value:
  579. pass
  580. elif value:
  581. pass
  582. elif value:
  583. pass
  584. elif value:
  585. pass
  586. elif value:
  587. pass
  588. elif value:
  589. pass
  590. elif value:
  591. pass
  592. elif value:
  593. pass
  594. elif value:
  595. pass
  596. elif value:
  597. pass
  598. elif value:
  599. pass
  600. elif value:
  601. pass
  602. elif value:
  603. pass
  604. elif value:
  605. pass
  606. elif value:
  607. pass
  608. elif value:
  609. pass
  610. elif value:
  611. pass
  612. elif value:
  613. pass
  614. elif value:
  615. pass
  616. elif value:
  617. pass
  618. elif value:
  619. pass
  620. elif value:
  621. pass
  622. elif value:
  623. pass
  624. elif value:
  625. pass
  626. elif value:
  627. pass
  628. elif value:
  629. pass
  630. elif value:
  631. pass
  632. elif value:
  633. pass
  634. elif value:
  635. pass
  636. elif value:
  637. pass
  638. elif value:
  639. pass
  640. elif value:
  641. pass
  642. elif value:
  643. pass
  644. elif value:
  645. pass
  646. elif value:
  647. pass
  648. elif value:
  649. pass
  650. elif value:
  651. pass
  652. elif value:
  653. pass
  654. elif value:
  655. pass
  656. elif value:
  657. pass
  658. elif value:
  659. pass
  660. elif value:
  661. pass
  662. elif value:
  663. pass
  664. elif value:
  665. pass
  666. elif value:
  667. pass
  668. elif value:
  669. pass
  670. elif value:
  671. pass
  672. elif value:
  673. pass
  674. elif value:
  675. pass
  676. elif value:
  677. pass
  678. elif value:
  679. pass
  680. elif value:
  681. pass
  682. elif value:
  683. pass
  684. elif value:
  685. pass
  686. elif value:
  687. pass
  688. elif value:
  689. pass
  690. elif value:
  691. pass
  692. elif value:
  693. pass
  694. elif value:
  695. pass
  696. elif value:
  697. pass
  698. elif value:
  699. pass
  700. elif value:
  701. pass
  702. elif value:
  703. pass
  704. elif value:
  705. pass
  706. elif value:
  707. pass
  708. elif value:
  709. pass
  710. elif value:
  711. pass
  712. elif value:
  713. pass
  714. elif value:
  715. pass
  716. elif value:
  717. pass
  718. elif value:
  719. pass
  720. elif value:
  721. pass
  722. elif value:
  723. pass
  724. elif value:
  725. pass
  726. elif value:
  727. pass
  728. elif value:
  729. pass
  730. elif value:
  731. pass
  732. elif value:
  733. pass
  734. elif value:
  735. pass
  736. elif value:
  737. pass
  738. elif value:
  739. pass
  740. elif value:
  741. pass
  742. elif value:
  743. pass
  744. elif value:
  745. pass
  746. elif value:
  747. pass
  748. elif value:
  749. pass
  750. elif value:
  751. pass
  752. elif value:
  753. pass
  754. elif value:
  755. pass
  756. elif value:
  757. pass
  758. elif value:
  759. pass
  760. elif value:
  761. pass
  762. elif value:
  763. pass
  764. elif value:
  765. pass
  766. elif value:
  767. pass
  768. elif value:
  769. pass
  770. elif value:
  771. pass
  772. elif value:
  773. pass
  774. elif value:
  775. pass
  776. elif value:
  777. pass
  778. elif value:
  779. pass
  780. elif value:
  781. pass
  782. elif value:
  783. pass
  784. elif value:
  785. pass
  786. elif value:
  787. pass
  788. elif value:
  789. pass
  790. elif value:
  791. pass
  792. elif value:
  793. pass
  794. elif value:
  795. pass
  796. elif value:
  797. pass
  798. elif value:
  799. pass
  800. elif value:
  801. pass
  802. elif value:
  803. pass
  804. elif value:
  805. pass
  806. elif value:
  807. pass
  808. elif value:
  809. pass
  810. elif value:
  811. pass
  812. elif value:
  813. pass
  814. elif value:
  815. pass
  816. elif value:
  817. pass
  818. elif value:
  819. pass
  820. elif value:
  821. pass
  822. elif value:
  823. pass
  824. elif value:
  825. pass
  826. elif value:
  827. pass
  828. elif value:
  829. pass
  830. elif value:
  831. pass
  832. elif value:
  833. pass
  834. elif value:
  835. pass
  836. elif value:
  837. pass
  838. elif value:
  839. pass
  840. elif value:
  841. pass
  842. elif value:
  843. pass
  844. elif value:
  845. pass
  846. elif value:
  847. pass
  848. elif value:
  849. pass
  850. elif value:
  851. pass
  852. elif value:
  853. pass
  854. elif value:
  855. pass
  856. elif value:
  857. pass
  858. elif value:
  859. pass
  860. elif value:
  861. pass
  862. elif value:
  863. pass
  864. elif value:
  865. pass
  866. elif value:
  867. pass
  868. elif value:
  869. pass
  870. elif value:
  871. pass
  872. elif value:
  873. pass
  874. elif value:
  875. pass
  876. elif value:
  877. pass
  878. elif value:
  879. pass
  880. elif value:
  881. pass
  882. elif value:
  883. pass
  884. elif value:
  885. pass
  886. elif value:
  887. pass
  888. elif value:
  889. pass
  890. elif value:
  891. pass
  892. elif value:
  893. pass
  894. elif value:
  895. pass
  896. elif value:
  897. pass
  898. elif value:
  899. pass
  900. elif value:
  901. pass
  902. elif value:
  903. pass
  904. elif value:
  905. pass
  906. elif value:
  907. pass
  908. elif value:
  909. pass
  910. elif value:
  911. pass
  912. elif value:
  913. pass
  914. elif value:
  915. pass
  916. elif value:
  917. pass
  918. elif value:
  919. pass
  920. elif value:
  921. pass
  922. elif value:
  923. pass
  924. elif value:
  925. pass
  926. elif value:
  927. pass
  928. elif value:
  929. pass
  930. elif value:
  931. pass
  932. elif value:
  933. pass
  934. elif value:
  935. pass
  936. elif value:
  937. pass
  938. elif value:
  939. pass
  940. elif value:
  941. pass
  942. elif value:
  943. pass
  944. elif value:
  945. pass
  946. elif value:
  947. pass
  948. elif value:
  949. pass
  950. elif value:
  951. pass
  952. elif value:
  953. pass
  954. elif value:
  955. pass
  956. elif value:
  957. pass
  958. elif value:
  959. pass
  960. elif value:
  961. pass
  962. elif value:
  963. pass
  964. elif value:
  965. pass
  966. elif value:
  967. pass
  968. elif value:
  969. pass
  970. elif value:
  971. pass
  972. elif value:
  973. pass
  974. elif value:
  975. pass
  976. elif value:
  977. pass
  978. elif value:
  979. pass
  980. elif value:
  981. pass
  982. elif value:
  983. pass
  984. elif value:
  985. pass
  986. elif value:
  987. pass
  988. elif value:
  989. pass
  990. elif value:
  991. pass
  992. elif value:
  993. pass
  994. elif value:
  995. pass
  996. elif value:
  997. pass
  998. elif value:
  999. pass
  1000. elif value:
  1001. pass
  1002. elif value:
  1003. pass
  1004. elif value:
  1005. pass
  1006. elif value:
  1007. pass
  1008. elif value:
  1009. pass
  1010. elif value:
  1011. pass
  1012. elif value:
  1013. pass
  1014. elif value:
  1015. pass
  1016. elif value:
  1017. pass
  1018. elif value:
  1019. pass
  1020. elif value:
  1021. pass
  1022. elif value:
  1023. pass
  1024. elif value:
  1025. pass
  1026. elif value:
  1027. pass
  1028. elif value:
  1029. pass
  1030. elif value:
  1031. pass
  1032. elif value:
  1033. pass
  1034. elif value:
  1035. pass
  1036. elif value:
  1037. pass
  1038. elif value:
  1039. pass
  1040. elif value:
  1041. pass
  1042. elif value:
  1043. pass
  1044. elif value:
  1045. pass
  1046. elif value:
  1047. pass
  1048. elif value:
  1049. pass
  1050. elif value:
  1051. pass
  1052. elif value:
  1053. pass
  1054. elif value:
  1055. pass
  1056. elif value:
  1057. pass
  1058. elif value:
  1059. pass
  1060. elif value:
  1061. pass
  1062. elif value:
  1063. pass
  1064. elif value:
  1065. pass
  1066. elif value:
  1067. pass
  1068. elif value:
  1069. pass
  1070. elif value:
  1071. pass
  1072. elif value:
  1073. pass
  1074. elif value:
  1075. pass
  1076. elif value:
  1077. pass
  1078. elif value:
  1079. pass
  1080. elif value:
  1081. pass
  1082. elif value:
  1083. pass
  1084. elif value:
  1085. pass
  1086. elif value:
  1087. pass
  1088. elif value:
  1089. pass
  1090. elif value:
  1091. pass
  1092. elif value:
  1093. pass
  1094. elif value:
  1095. pass
  1096. elif value:
  1097. pass
  1098. elif value:
  1099. pass
  1100. elif value:
  1101. pass
  1102. elif value:
  1103. pass
  1104. elif value:
  1105. pass
  1106. elif value:
  1107. pass
  1108. elif value:
  1109. pass
  1110. elif value:
  1111. pass
  1112. elif value:
  1113. pass
  1114. elif value:
  1115. pass
  1116. elif value:
  1117. pass
  1118. elif True:
  1119. return 23
  1120. for i in xrange(10000):
  1121. AreEqual(f(True), 42)
  1122. for i in xrange(10000):
  1123. AreEqual(f(False), 23)
  1124. run_test(__name__)