| 148 | } |
| 149 | |
| 150 | func TestNumber(t *testing.T) { |
| 151 | numberTests := []struct { |
| 152 | number string |
| 153 | expected string |
| 154 | }{ |
| 155 | {"", ""}, |
| 156 | {"0", "0"}, |
| 157 | {".0", "0"}, |
| 158 | {"1.0", "1"}, |
| 159 | {"0.1", ".1"}, |
| 160 | {"+1", "1"}, |
| 161 | {"-1", "-1"}, |
| 162 | {"-0.1", "-.1"}, |
| 163 | {"10", "10"}, |
| 164 | {"100", "100"}, |
| 165 | {"1000", "1e3"}, |
| 166 | {"0.001", ".001"}, |
| 167 | {"0.0001", "1e-4"}, |
| 168 | {"100e1", "1e3"}, |
| 169 | {"1e10", "1e10"}, |
| 170 | {"1e-10", "1e-10"}, |
| 171 | {"1000e-7", "1e-4"}, |
| 172 | {"1000e-6", ".001"}, |
| 173 | {"1.1e+1", "11"}, |
| 174 | {"1.1e-1", ".11"}, |
| 175 | {"1.1e6", "11e5"}, |
| 176 | {"1.1e", "1.1e"}, // broken number, don't parse |
| 177 | {"1.1e+", "1.1e+"}, // broken number, don't parse |
| 178 | {"0.252", ".252"}, |
| 179 | {"1.252", "1.252"}, |
| 180 | {"-1.252", "-1.252"}, |
| 181 | {"0.075", ".075"}, |
| 182 | {"789012345678901234567890123456789e9234567890123456789", "789012345678901234567890123456789e9234567890123456789"}, |
| 183 | {".000100009", "100009e-9"}, |
| 184 | {".0001000009", ".0001000009"}, |
| 185 | {".0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009", ".0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009"}, |
| 186 | {".6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e-9", ".6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e-9"}, |
| 187 | {"E\x1f", "E\x1f"}, // fuzz |
| 188 | {"1e9223372036854775807", "1e9223372036854775807"}, |
| 189 | {"11e9223372036854775807", "11e9223372036854775807"}, |
| 190 | {".01e-9223372036854775808", ".01e-9223372036854775808"}, |
| 191 | {".011e-9223372036854775808", ".011e-9223372036854775808"}, |
| 192 | {"1e-1", ".1"}, |
| 193 | {"e-1", "e-1"}, |
| 194 | |
| 195 | {".12345e8", "12345e3"}, |
| 196 | {".12345e7", "1234500"}, |
| 197 | {".12345e6", "123450"}, |
| 198 | {".12345e5", "12345"}, |
| 199 | {".012345e6", "12345"}, |
| 200 | {".12345e4", "1234.5"}, |
| 201 | {"-.12345e4", "-1234.5"}, |
| 202 | {".12345e0", ".12345"}, |
| 203 | {".12345e-1", ".012345"}, |
| 204 | {".12345e-2", ".0012345"}, |
| 205 | {".12345e-3", "12345e-8"}, |
| 206 | {".12345e-4", "12345e-9"}, |
| 207 | {".12345e-5", ".12345e-5"}, |