| 801 | #include <assert.h> |
| 802 | |
| 803 | static void test_string2ll(void) { |
| 804 | char buf[32]; |
| 805 | long long v; |
| 806 | |
| 807 | /* May not start with +. */ |
| 808 | strcpy(buf,"+1"); |
| 809 | assert(string2ll(buf,strlen(buf),&v) == 0); |
| 810 | |
| 811 | /* Leading space. */ |
| 812 | strcpy(buf," 1"); |
| 813 | assert(string2ll(buf,strlen(buf),&v) == 0); |
| 814 | |
| 815 | /* Trailing space. */ |
| 816 | strcpy(buf,"1 "); |
| 817 | assert(string2ll(buf,strlen(buf),&v) == 0); |
| 818 | |
| 819 | /* May not start with 0. */ |
| 820 | strcpy(buf,"01"); |
| 821 | assert(string2ll(buf,strlen(buf),&v) == 0); |
| 822 | |
| 823 | strcpy(buf,"-1"); |
| 824 | assert(string2ll(buf,strlen(buf),&v) == 1); |
| 825 | assert(v == -1); |
| 826 | |
| 827 | strcpy(buf,"0"); |
| 828 | assert(string2ll(buf,strlen(buf),&v) == 1); |
| 829 | assert(v == 0); |
| 830 | |
| 831 | strcpy(buf,"1"); |
| 832 | assert(string2ll(buf,strlen(buf),&v) == 1); |
| 833 | assert(v == 1); |
| 834 | |
| 835 | strcpy(buf,"99"); |
| 836 | assert(string2ll(buf,strlen(buf),&v) == 1); |
| 837 | assert(v == 99); |
| 838 | |
| 839 | strcpy(buf,"-99"); |
| 840 | assert(string2ll(buf,strlen(buf),&v) == 1); |
| 841 | assert(v == -99); |
| 842 | |
| 843 | strcpy(buf,"-9223372036854775808"); |
| 844 | assert(string2ll(buf,strlen(buf),&v) == 1); |
| 845 | assert(v == LLONG_MIN); |
| 846 | |
| 847 | strcpy(buf,"-9223372036854775809"); /* overflow */ |
| 848 | assert(string2ll(buf,strlen(buf),&v) == 0); |
| 849 | |
| 850 | strcpy(buf,"9223372036854775807"); |
| 851 | assert(string2ll(buf,strlen(buf),&v) == 1); |
| 852 | assert(v == LLONG_MAX); |
| 853 | |
| 854 | strcpy(buf,"9223372036854775808"); /* overflow */ |
| 855 | assert(string2ll(buf,strlen(buf),&v) == 0); |
| 856 | } |
| 857 | |
| 858 | static void test_string2l(void) { |
| 859 | char buf[32]; |