|
| 1 | +module Ploeh.Numsense.CatalanExamples |
| 2 | + |
| 3 | +open Xunit |
| 4 | +open Swensen.Unquote |
| 5 | + |
| 6 | +[<Theory>] |
| 7 | +[<InlineData( "zero", 0)>] |
| 8 | +[<InlineData( " zero", 0)>] |
| 9 | +[<InlineData( "zero ", 0)>] |
| 10 | +[<InlineData( " zero ", 0)>] |
| 11 | +[<InlineData( "Zero", 0)>] |
| 12 | +[<InlineData( "ZERO", 0)>] |
| 13 | +[<InlineData( " zERo\t", 0)>] |
| 14 | +[<InlineData( "un", 1)>] |
| 15 | +[<InlineData( "UN", 1)>] |
| 16 | +[<InlineData( "dos", 2)>] |
| 17 | +[<InlineData( " dos", 2)>] |
| 18 | +[<InlineData( "tres", 3)>] |
| 19 | +[<InlineData( "tres ", 3)>] |
| 20 | +[<InlineData( "quatre", 4)>] |
| 21 | +[<InlineData( " quatre ", 4)>] |
| 22 | +[<InlineData( "cinc", 5)>] |
| 23 | +[<InlineData( "CinC", 5)>] |
| 24 | +[<InlineData( "sis", 6)>] |
| 25 | +[<InlineData( " SIS ", 6)>] |
| 26 | +[<InlineData( "set", 7)>] |
| 27 | +[<InlineData( " sEt", 7)>] |
| 28 | +[<InlineData( "vuit", 8)>] |
| 29 | +[<InlineData( "vUIT", 8)>] |
| 30 | +[<InlineData( "nou", 9)>] |
| 31 | +[<InlineData( "NoU ", 9)>] |
| 32 | +[<InlineData( "deu", 10)>] |
| 33 | +[<InlineData( "onze", 11)>] |
| 34 | +[<InlineData( "dotze", 12)>] |
| 35 | +[<InlineData( "tretze", 13)>] |
| 36 | +[<InlineData( "catorze", 14)>] |
| 37 | +[<InlineData( "quinze", 15)>] |
| 38 | +[<InlineData( "setze", 16)>] |
| 39 | +[<InlineData( "disset", 17)>] |
| 40 | +[<InlineData( "divuit", 18)>] |
| 41 | +[<InlineData( "dinou", 19)>] |
| 42 | +[<InlineData( "vint", 20)>] |
| 43 | +[<InlineData( "vint-i-un", 21)>] |
| 44 | +[<InlineData( "vint-i-dos", 22)>] |
| 45 | +[<InlineData( "trenta", 30)>] |
| 46 | +[<InlineData( "trenta-quatre", 34)>] |
| 47 | +[<InlineData( "trenta-vuit", 38)>] |
| 48 | +[<InlineData( "quaranta", 40)>] |
| 49 | +[<InlineData( "quaranta-un", 41)>] |
| 50 | +[<InlineData( "quaranta-quatre", 44)>] |
| 51 | +[<InlineData( "cinquanta", 50)>] |
| 52 | +[<InlineData( "cinquanta-set", 57)>] |
| 53 | +[<InlineData( "seixanta", 60)>] |
| 54 | +[<InlineData( "seixanta-cinc", 65)>] |
| 55 | +[<InlineData( "setanta", 70)>] |
| 56 | +[<InlineData( "setanta-set", 77)>] |
| 57 | +[<InlineData( "setanta-nou", 79)>] |
| 58 | +[<InlineData( "vuitanta", 80)>] |
| 59 | +[<InlineData( "vuitanta-sis", 86)>] |
| 60 | +[<InlineData( "noranta", 90)>] |
| 61 | +[<InlineData( "noranta-tres", 93)>] |
| 62 | +[<InlineData( "cent", 100)>] |
| 63 | +[<InlineData( "cent un", 101)>] |
| 64 | +[<InlineData( "dos-cents", 200)>] |
| 65 | +[<InlineData( "dos-cents trenta-set", 237)>] |
| 66 | +[<InlineData( "tres-cents setanta-cinc", 375)>] |
| 67 | +[<InlineData( "quatre-cents noranta", 490)>] |
| 68 | +[<InlineData( "cinc-cents seixanta-tres", 563)>] |
| 69 | +[<InlineData( "sis-cents divuit", 618)>] |
| 70 | +[<InlineData( "set-cents setanta-set", 777)>] |
| 71 | +[<InlineData( "vuit-cents cinc", 805)>] |
| 72 | +[<InlineData( "vuit-cents sis", 806)>] |
| 73 | +[<InlineData( "vuit-cents set", 807)>] |
| 74 | +[<InlineData( "nou-cents cinquanta-nou", 959)>] |
| 75 | +[<InlineData( "mil", 1000)>] |
| 76 | +[<InlineData( "mil un", 1001)>] |
| 77 | +[<InlineData( "mil dos", 1002)>] |
| 78 | +[<InlineData( "mil seixanta-quatre", 1064)>] |
| 79 | +[<InlineData( "dos mil", 2000)>] |
| 80 | +[<InlineData( "vuit mil set-cents vint-i-un", 8721)>] |
| 81 | +[<InlineData( "nou mil cent vint-i-tres", 9123)>] |
| 82 | +[<InlineData( "deu mil", 10000)>] |
| 83 | +[<InlineData( "deu mil cent un", 10101)>] |
| 84 | +[<InlineData( "deu mil cent dos", 10102)>] |
| 85 | +[<InlineData( "vint-i-tres mil cinc-cents seixanta-quatre", 23564)>] |
| 86 | +[<InlineData( "vuitanta mil deu", 80010)>] |
| 87 | +[<InlineData( "cent mil", 100000)>] |
| 88 | +[<InlineData( "cent mil un", 100001)>] |
| 89 | +[<InlineData( "tres-cents dinou mil tres-cents quaranta-nou", 319349)>] |
| 90 | +[<InlineData( "un milió", 1000000)>] |
| 91 | +[<InlineData( "un milió un", 1000001)>] |
| 92 | +[<InlineData( "dos milions deu", 2000010)>] |
| 93 | +[<InlineData( " sis milions trenta mil", 6030000)>] |
| 94 | +[<InlineData( "nou milions dos-cents un mil sis-cents vuitanta", 9201680)>] |
| 95 | +[<InlineData( "deu milions", 10000000)>] |
| 96 | +[<InlineData( "deu milions nou", 10000009)>] |
| 97 | +[<InlineData( "vint-i-un milions", 21000000)>] |
| 98 | +[<InlineData("quaranta-set milions sis-cents seixanta-un mil seixanta", 47661060)>] |
| 99 | +[<InlineData( "cent milions", 100000000)>] |
| 100 | +[<InlineData( "dos-cents cinc milions", 205000000)>] |
| 101 | +[<InlineData( "tres-cents set milions", 307000000)>] |
| 102 | +[<InlineData("quatre-cents seixanta-un milions seixanta mil sis-cents", 461060600)>] |
| 103 | +[<InlineData( "mil milions", 1000000000)>] |
| 104 | +[<InlineData( "dos mil milions", 2000000000)>] |
| 105 | +[<InlineData("dos mil quaranta-nou milions sis-cents cinquanta mil", 2049650000)>] |
| 106 | +[<InlineData( |
| 107 | + "dos mil cent quaranta-set milions quatre-cents vuitanta-tres mil sis-cents quaranta-set", |
| 108 | + System.Int32.MaxValue)>] |
| 109 | +let ``tryParseCatalan returns correct result`` (catalan, expected) = |
| 110 | + let actual = Numeral.tryParseCatalan catalan |
| 111 | + Some expected =! actual |
| 112 | + |
| 113 | +[<Theory>] |
| 114 | +[<InlineData( 0, "zero")>] |
| 115 | +[<InlineData( 1, "un")>] |
| 116 | +[<InlineData( 2, "dos")>] |
| 117 | +[<InlineData( 3, "tres")>] |
| 118 | +[<InlineData( 4, "quatre")>] |
| 119 | +[<InlineData( 5, "cinc")>] |
| 120 | +[<InlineData( 6, "sis")>] |
| 121 | +[<InlineData( 7, "set")>] |
| 122 | +[<InlineData( 8, "vuit")>] |
| 123 | +[<InlineData( 9, "nou")>] |
| 124 | +[<InlineData( 10, "deu")>] |
| 125 | +[<InlineData( 11, "onze")>] |
| 126 | +[<InlineData( 12, "dotze")>] |
| 127 | +[<InlineData( 13, "tretze")>] |
| 128 | +[<InlineData( 14, "catorze")>] |
| 129 | +[<InlineData( 15, "quinze")>] |
| 130 | +[<InlineData( 16, "setze")>] |
| 131 | +[<InlineData( 17, "disset")>] |
| 132 | +[<InlineData( 18, "divuit")>] |
| 133 | +[<InlineData( 19, "dinou")>] |
| 134 | +[<InlineData( 20, "vint")>] |
| 135 | +[<InlineData( 21, "vint-i-un")>] |
| 136 | +[<InlineData( 30, "trenta")>] |
| 137 | +[<InlineData( 34, "trenta-quatre")>] |
| 138 | +[<InlineData( 40, "quaranta")>] |
| 139 | +[<InlineData( 42, "quaranta-dos")>] |
| 140 | +[<InlineData( 50, "cinquanta")>] |
| 141 | +[<InlineData( 58, "cinquanta-vuit")>] |
| 142 | +[<InlineData( 60, "seixanta")>] |
| 143 | +[<InlineData( 65, "seixanta-cinc")>] |
| 144 | +[<InlineData( 70, "setanta")>] |
| 145 | +[<InlineData( 79, "setanta-nou")>] |
| 146 | +[<InlineData( 80, "vuitanta")>] |
| 147 | +[<InlineData( 86, "vuitanta-sis")>] |
| 148 | +[<InlineData( 90, "noranta")>] |
| 149 | +[<InlineData( 93, "noranta-tres")>] |
| 150 | +[<InlineData( 100, "cent")>] |
| 151 | +[<InlineData( 101, "cent un")>] |
| 152 | +[<InlineData( 110, "cent deu")>] |
| 153 | +[<InlineData( 114, "cent catorze")>] |
| 154 | +[<InlineData( 135, "cent trenta-cinc")>] |
| 155 | +[<InlineData( 200, "dos-cents")>] |
| 156 | +[<InlineData( 282, "dos-cents vuitanta-dos")>] |
| 157 | +[<InlineData( 331, "tres-cents trenta-un")>] |
| 158 | +[<InlineData( 407, "quatre-cents set")>] |
| 159 | +[<InlineData( 520, "cinc-cents vint")>] |
| 160 | +[<InlineData( 666, "sis-cents seixanta-sis")>] |
| 161 | +[<InlineData( 798, "set-cents noranta-vuit")>] |
| 162 | +[<InlineData( 857, "vuit-cents cinquanta-set")>] |
| 163 | +[<InlineData( 999, "nou-cents noranta-nou")>] |
| 164 | +[<InlineData( 1000, "mil")>] |
| 165 | +[<InlineData( 1001, "mil un")>] |
| 166 | +[<InlineData( 1010, "mil deu")>] |
| 167 | +[<InlineData( 1066, "mil seixanta-sis")>] |
| 168 | +[<InlineData( 1337, "mil tres-cents trenta-set")>] |
| 169 | +[<InlineData( 1984, "mil nou-cents vuitanta-quatre")>] |
| 170 | +[<InlineData( 2015, "dos mil quinze")>] |
| 171 | +[<InlineData( 3000, "tres mil")>] |
| 172 | +[<InlineData( 3297, "tres mil dos-cents noranta-set")>] |
| 173 | +[<InlineData( 4080, "quatre mil vuitanta")>] |
| 174 | +[<InlineData( 5011, "cinc mil onze")>] |
| 175 | +[<InlineData( 6025, "sis mil vint-i-cinc")>] |
| 176 | +[<InlineData( 7441, "set mil quatre-cents quaranta-un")>] |
| 177 | +[<InlineData( 8513, "vuit mil cinc-cents tretze")>] |
| 178 | +[<InlineData( 9000, "nou mil")>] |
| 179 | +[<InlineData( 10000, "deu mil")>] |
| 180 | +[<InlineData( 12001, "dotze mil un")>] |
| 181 | +[<InlineData( 23456, "vint-i-tres mil quatre-cents cinquanta-sis")>] |
| 182 | +[<InlineData( 32109, "trenta-dos mil cent nou")>] |
| 183 | +[<InlineData( 40404, "quaranta mil quatre-cents quatre")>] |
| 184 | +[<InlineData( 56789, "cinquanta-sis mil set-cents vuitanta-nou")>] |
| 185 | +[<InlineData( 60015, "seixanta mil quinze")>] |
| 186 | +[<InlineData( 71003, "setanta-un mil tres")>] |
| 187 | +[<InlineData( 80522, "vuitanta mil cinc-cents vint-i-dos")>] |
| 188 | +[<InlineData( 98765, "noranta-vuit mil set-cents seixanta-cinc")>] |
| 189 | +[<InlineData( 100000, "cent mil")>] |
| 190 | +[<InlineData( 100001, "cent mil un")>] |
| 191 | +[<InlineData( 100010, "cent mil deu")>] |
| 192 | +[<InlineData( 101010, "cent un mil deu")>] |
| 193 | +[<InlineData( 200000, "dos-cents mil")>] |
| 194 | +[<InlineData( 321000, "tres-cents vint-i-un mil")>] |
| 195 | +[<InlineData( 411416, "quatre-cents onze mil quatre-cents setze")>] |
| 196 | +[<InlineData( 530121, "cinc-cents trenta mil cent vint-i-un")>] |
| 197 | +[<InlineData( 600000, "sis-cents mil")>] |
| 198 | +[<InlineData( 788000, "set-cents vuitanta-vuit mil")>] |
| 199 | +[<InlineData( 876540, "vuit-cents setanta-sis mil cinc-cents quaranta")>] |
| 200 | +[<InlineData( 908077, "nou-cents vuit mil setanta-set")>] |
| 201 | +[<InlineData( 1000000, "un milió")>] |
| 202 | +[<InlineData( 2000002, "dos milions dos")>] |
| 203 | +[<InlineData( 3040506, "tres milions quaranta mil cinc-cents sis")>] |
| 204 | +[<InlineData( 4321000, "quatre milions tres-cents vint-i-un mil")>] |
| 205 | +[<InlineData( 5004621, "cinc milions quatre mil sis-cents vint-i-un")>] |
| 206 | +[<InlineData( 6982001, "sis milions nou-cents vuitanta-dos mil un")>] |
| 207 | +[<InlineData( 7000000, "set milions")>] |
| 208 | +[<InlineData( 8000220, "vuit milions dos-cents vint")>] |
| 209 | +[<InlineData( 9099000, "nou milions noranta-nou mil")>] |
| 210 | +[<InlineData( 10000000, "deu milions")>] |
| 211 | +[<InlineData( 24000000, "vint-i-quatre milions")>] |
| 212 | +[<InlineData( 39020011, "trenta-nou milions vint mil onze")>] |
| 213 | +[<InlineData( 40606100, "quaranta milions sis-cents sis mil cent")>] |
| 214 | +[<InlineData( 53000000, "cinquanta-tres milions")>] |
| 215 | +[<InlineData( 64000098, "seixanta-quatre milions noranta-vuit")>] |
| 216 | +[<InlineData( 70003190, "setanta milions tres mil cent noranta")>] |
| 217 | +[<InlineData( 80000000, "vuitanta milions")>] |
| 218 | +[<InlineData( 99000099, "noranta-nou milions noranta-nou")>] |
| 219 | +[<InlineData( 100000000, "cent milions")>] |
| 220 | +[<InlineData( 209000000, "dos-cents nou milions")>] |
| 221 | +[<InlineData( 398000000, "tres-cents noranta-vuit milions")>] |
| 222 | +[<InlineData( 439011000, "quatre-cents trenta-nou milions onze mil")>] |
| 223 | +[<InlineData( 560400000, "cinc-cents seixanta milions quatre-cents mil")>] |
| 224 | +[<InlineData( 600010900, "sis-cents milions deu mil nou-cents")>] |
| 225 | +[<InlineData( 700000000, "set-cents milions")>] |
| 226 | +[<InlineData( 800116000, "vuit-cents milions cent setze mil")>] |
| 227 | +[<InlineData( 900800007, "nou-cents milions vuit-cents mil set")>] |
| 228 | +[<InlineData(1000000000, "mil milions")>] |
| 229 | +[<InlineData(2121000000, "dos mil cent vint-i-un milions")>] |
| 230 | +[<InlineData( |
| 231 | + System.Int32.MaxValue, |
| 232 | + "dos mil cent quaranta-set milions quatre-cents vuitanta-tres mil sis-cents quaranta-set")>] |
| 233 | +let ``toCatalan returns correct result`` (i, expected) = |
| 234 | + let actual = Numeral.toCatalan i |
| 235 | + expected =! actual |
0 commit comments