comparison tests/test-vasnprintf-posix.c @ 8804:6ce313658b4d

Work around an incorrect implementation of the 0 flag on most platforms.
author Bruno Haible <bruno@clisp.org>
date Sun, 06 May 2007 23:02:10 +0000
parents 6c1d98929550
children 4c705f82cd20
comparison
equal deleted inserted replaced
8803:6c1d98929550 8804:6ce313658b4d
835 ASSERT (strcmp (result, "nan 33") == 0); 835 ASSERT (strcmp (result, "nan 33") == 0);
836 ASSERT (length == strlen (result)); 836 ASSERT (length == strlen (result));
837 free (result); 837 free (result);
838 } 838 }
839 839
840 { /* FLAG_ZERO. */ 840 { /* Width. */
841 size_t length;
842 char *result =
843 my_asnprintf (NULL, &length, "%10f %d", 1.75, 33, 44, 55);
844 ASSERT (result != NULL);
845 ASSERT (strcmp (result, " 1.750000 33") == 0);
846 ASSERT (length == strlen (result));
847 free (result);
848 }
849
850 { /* FLAG_LEFT. */
851 size_t length;
852 char *result =
853 my_asnprintf (NULL, &length, "%-10f %d", 1.75, 33, 44, 55);
854 ASSERT (result != NULL);
855 ASSERT (strcmp (result, "1.750000 33") == 0);
856 ASSERT (length == strlen (result));
857 free (result);
858 }
859
860 { /* FLAG_SHOWSIGN. */
861 size_t length;
862 char *result =
863 my_asnprintf (NULL, &length, "%+f %d", 1.75, 33, 44, 55);
864 ASSERT (result != NULL);
865 ASSERT (strcmp (result, "+1.750000 33") == 0);
866 ASSERT (length == strlen (result));
867 free (result);
868 }
869
870 { /* FLAG_SPACE. */
871 size_t length;
872 char *result =
873 my_asnprintf (NULL, &length, "% f %d", 1.75, 33, 44, 55);
874 ASSERT (result != NULL);
875 ASSERT (strcmp (result, " 1.750000 33") == 0);
876 ASSERT (length == strlen (result));
877 free (result);
878 }
879
880 { /* FLAG_ALT. */
881 size_t length;
882 char *result =
883 my_asnprintf (NULL, &length, "%#f %d", 1.75, 33, 44, 55);
884 ASSERT (result != NULL);
885 ASSERT (strcmp (result, "1.750000 33") == 0);
886 ASSERT (length == strlen (result));
887 free (result);
888 }
889
890 { /* FLAG_ALT. */
891 size_t length;
892 char *result =
893 my_asnprintf (NULL, &length, "%#.f %d", 1.75, 33, 44, 55);
894 ASSERT (result != NULL);
895 ASSERT (strcmp (result, "2. 33") == 0);
896 ASSERT (length == strlen (result));
897 free (result);
898 }
899
900 { /* FLAG_ZERO with finite number. */
841 size_t length; 901 size_t length;
842 char *result = 902 char *result =
843 my_asnprintf (NULL, &length, "%015f %d", 1234.0, 33, 44, 55); 903 my_asnprintf (NULL, &length, "%015f %d", 1234.0, 33, 44, 55);
844 ASSERT (result != NULL); 904 ASSERT (result != NULL);
845 ASSERT (strcmp (result, "00001234.000000 33") == 0); 905 ASSERT (strcmp (result, "00001234.000000 33") == 0);
856 || strcmp (result, " -infinity 33") == 0); 916 || strcmp (result, " -infinity 33") == 0);
857 ASSERT (length == strlen (result)); 917 ASSERT (length == strlen (result));
858 free (result); 918 free (result);
859 } 919 }
860 920
921 { /* FLAG_ZERO with NaN. */
922 size_t length;
923 char *result =
924 my_asnprintf (NULL, &length, "%015f %d", NaN (), 33, 44, 55);
925 ASSERT (result != NULL);
926 ASSERT (strcmp (result, " nan 33") == 0);
927 ASSERT (length == strlen (result));
928 free (result);
929 }
930
861 { /* Precision. */ 931 { /* Precision. */
862 size_t length; 932 size_t length;
863 char *result = 933 char *result =
864 my_asnprintf (NULL, &length, "%.f %d", 1234.0, 33, 44, 55); 934 my_asnprintf (NULL, &length, "%.f %d", 1234.0, 33, 44, 55);
865 ASSERT (result != NULL); 935 ASSERT (result != NULL);
949 ASSERT (strcmp (result, "nan 33") == 0); 1019 ASSERT (strcmp (result, "nan 33") == 0);
950 ASSERT (length == strlen (result)); 1020 ASSERT (length == strlen (result));
951 free (result); 1021 free (result);
952 } 1022 }
953 1023
954 { /* FLAG_ZERO. */ 1024 { /* Width. */
1025 size_t length;
1026 char *result =
1027 my_asnprintf (NULL, &length, "%10Lf %d", 1.75L, 33, 44, 55);
1028 ASSERT (result != NULL);
1029 ASSERT (strcmp (result, " 1.750000 33") == 0);
1030 ASSERT (length == strlen (result));
1031 free (result);
1032 }
1033
1034 { /* FLAG_LEFT. */
1035 size_t length;
1036 char *result =
1037 my_asnprintf (NULL, &length, "%-10Lf %d", 1.75L, 33, 44, 55);
1038 ASSERT (result != NULL);
1039 ASSERT (strcmp (result, "1.750000 33") == 0);
1040 ASSERT (length == strlen (result));
1041 free (result);
1042 }
1043
1044 { /* FLAG_SHOWSIGN. */
1045 size_t length;
1046 char *result =
1047 my_asnprintf (NULL, &length, "%+Lf %d", 1.75L, 33, 44, 55);
1048 ASSERT (result != NULL);
1049 ASSERT (strcmp (result, "+1.750000 33") == 0);
1050 ASSERT (length == strlen (result));
1051 free (result);
1052 }
1053
1054 { /* FLAG_SPACE. */
1055 size_t length;
1056 char *result =
1057 my_asnprintf (NULL, &length, "% Lf %d", 1.75L, 33, 44, 55);
1058 ASSERT (result != NULL);
1059 ASSERT (strcmp (result, " 1.750000 33") == 0);
1060 ASSERT (length == strlen (result));
1061 free (result);
1062 }
1063
1064 { /* FLAG_ALT. */
1065 size_t length;
1066 char *result =
1067 my_asnprintf (NULL, &length, "%#Lf %d", 1.75L, 33, 44, 55);
1068 ASSERT (result != NULL);
1069 ASSERT (strcmp (result, "1.750000 33") == 0);
1070 ASSERT (length == strlen (result));
1071 free (result);
1072 }
1073
1074 { /* FLAG_ALT. */
1075 size_t length;
1076 char *result =
1077 my_asnprintf (NULL, &length, "%#.Lf %d", 1.75L, 33, 44, 55);
1078 ASSERT (result != NULL);
1079 ASSERT (strcmp (result, "2. 33") == 0);
1080 ASSERT (length == strlen (result));
1081 free (result);
1082 }
1083
1084 { /* FLAG_ZERO with finite number. */
955 size_t length; 1085 size_t length;
956 char *result = 1086 char *result =
957 my_asnprintf (NULL, &length, "%015Lf %d", 1234.0L, 33, 44, 55); 1087 my_asnprintf (NULL, &length, "%015Lf %d", 1234.0L, 33, 44, 55);
958 ASSERT (result != NULL); 1088 ASSERT (result != NULL);
959 ASSERT (strcmp (result, "00001234.000000 33") == 0); 1089 ASSERT (strcmp (result, "00001234.000000 33") == 0);
966 char *result = 1096 char *result =
967 my_asnprintf (NULL, &length, "%015Lf %d", -1.0L / 0.0L, 33, 44, 55); 1097 my_asnprintf (NULL, &length, "%015Lf %d", -1.0L / 0.0L, 33, 44, 55);
968 ASSERT (result != NULL); 1098 ASSERT (result != NULL);
969 ASSERT (strcmp (result, " -inf 33") == 0 1099 ASSERT (strcmp (result, " -inf 33") == 0
970 || strcmp (result, " -infinity 33") == 0); 1100 || strcmp (result, " -infinity 33") == 0);
1101 ASSERT (length == strlen (result));
1102 free (result);
1103 }
1104
1105 { /* FLAG_ZERO with NaN. */
1106 static long double zero = 0.0L;
1107 size_t length;
1108 char *result =
1109 my_asnprintf (NULL, &length, "%015Lf %d", zero / zero, 33, 44, 55);
1110 ASSERT (result != NULL);
1111 ASSERT (strcmp (result, " nan 33") == 0);
971 ASSERT (length == strlen (result)); 1112 ASSERT (length == strlen (result));
972 free (result); 1113 free (result);
973 } 1114 }
974 1115
975 { /* Precision. */ 1116 { /* Precision. */