2424
2525-include_lib (" common_test/include/ct.hrl" 
2626-include_lib (" kernel/include/file.hrl" 
27+ -include_lib (" stdlib/include/assert.hrl" 
2728
2829-export ([all /0 , suite /0 , init_per_testcase /2 , end_per_testcase /2 ]).
2930
4647         test_length /1 ,
4748         fixed_apply_badarg /1 ,
4849         external_fun_apply3 /1 ,
49-          node_1 /1 ,doctests /1 ]).
50+          node_1 /1 ,doctests /1 , is_integer_3_test / 1 ]).
5051
5152suite () -> 
5253    [{ct_hooks ,[ts_install_cth ]},
@@ -64,7 +65,7 @@ all() ->
6465     is_process_alive , is_process_alive_signal_from ,
6566     process_info_blast , os_env_case_sensitivity ,
6667     verify_middle_queue_save , test_length ,fixed_apply_badarg ,
67-      external_fun_apply3 , node_1 , doctests ].
68+      external_fun_apply3 , node_1 , doctests ,  is_integer_3_test ].
6869
6970init_per_testcase (guard_bifs_in_erl_bif_types , Config ) when  is_list (Config ) -> 
7071    skip_missing_erl_bif_types (Config );
@@ -1780,6 +1781,72 @@ node_error(E0) ->
17801781doctests (_Config ) -> 
17811782    shell_docs :test (erlang , []).
17821783
1784+ is_integer_3_test (_Config ) -> 
1785+     _  =  [is_between_ten (X ) || X  <-  lists :seq (- 2 , 12 )],
1786+ 
1787+     false  =  is_between_ten (0 ),
1788+     true  =  is_between_ten (1 ),
1789+     true  =  is_between_ten (10 ),
1790+     false  =  is_between_ten (11 ),
1791+ 
1792+     false  =  is_between_ten (a ),
1793+     false  =  is_between_ten (5.0 ),
1794+     false  =  is_between_ten (- 7.0 ),
1795+     false  =  is_between_ten ([1 ]),
1796+ 
1797+     _  =  [begin 
1798+              is_between_negative (X ),
1799+              false  =  is_between_negative (- X )
1800+          end  || X  <-  lists :seq (- 100 , - 70 )],
1801+ 
1802+     _  =  [is_between_mixed (X ) || X  <-  lists :seq (- 10 , 10 )],
1803+ 
1804+     _  =  [begin 
1805+              is_between_bignum (X ),
1806+              false  =  is_between_bignum (- X ),
1807+              false  =  is_between_bignum (X  -  (1  bsl  64 ))
1808+          end  || X  <-  lists :seq ((1  bsl  64 ) -  3 , (1  bsl  64 ) +  10 )],
1809+ 
1810+     is_between_badarg (2 , 1.5 , 10.0 ),
1811+     is_between_badarg (2 , 10.0 , 1.5 ),
1812+     is_between_badarg (2 , 1.5 , 10 ),
1813+     is_between_badarg (2 , 1 , 10.0 ),
1814+     is_between_badarg (2 , lower , upper ),
1815+ 
1816+     ok .
1817+ 
1818+ - define (IS_BETWEEN_TEST (Name , LB , UB ),
1819+ Name (X0 ) -> 
1820+     F  =  id (is_integer ),
1821+     Lower0  =  LB ,
1822+     Upper0  =  UB ,
1823+     Lower  =  id (Lower0 ),
1824+     Upper  =  id (Upper0 ),
1825+ 
1826+     X1  =  id (X0 ),
1827+     Result  =  is_integer (X1 , Lower0 , Upper0 ),
1828+     Result  =  is_integer (X1 , Lower , Upper ),
1829+     Result  =  apply (erlang , F , id ([X1 , Lower , Upper ])),
1830+     Result  =  erlang :F (X1 , Lower , Upper ),
1831+ 
1832+     false  =  is_integer (id (X1 ), Upper , Lower ),
1833+ 
1834+     X  =  id (X1 ),
1835+     Result  =  is_integer (X ) andalso  Lower  =<  X  andalso  X  =<  Upper ,
1836+     Result ).
1837+ 
1838+ ? IS_BETWEEN_TEST (is_between_ten , 1 , 10 ).
1839+ ? IS_BETWEEN_TEST (is_between_negative , - 89 , - 77 ).
1840+ ? IS_BETWEEN_TEST (is_between_mixed , - 7 , 7 ).
1841+ ? IS_BETWEEN_TEST (is_between_bignum , 1  bsl  64 , (1  bsl  64 ) +  7 ).
1842+ 
1843+ is_between_badarg (X , A , B ) -> 
1844+     F  =  id (is_integer ),
1845+ 
1846+     ? assertError (badarg , is_integer (id (X ), id (A ), id (B ))),
1847+     ? assertError (badarg , erlang :F (X , A , B )),
1848+     ? assertError (badarg , apply (erlang , F , id ([X , A , B ]))).
1849+ 
17831850% % helpers
17841851
17851852wait_until (Fun ) -> 
0 commit comments