|
| 1 | +use super::*; |
| 2 | + |
| 3 | +const DIGITS_VALUES: [&str; 100] = [ |
| 4 | + "000", "001", "002", "003", "004", "005", "006", "007", "008", "009", "010", "011", "012", "013", |
| 5 | + "014", "015", "016", "017", "018", "019", "020", "021", "022", "023", "024", "025", "026", "027", |
| 6 | + "028", "029", "030", "031", "032", "033", "034", "035", "036", "037", "038", "039", "040", "041", |
| 7 | + "042", "043", "044", "045", "046", "047", "048", "049", "050", "051", "052", "053", "054", "055", |
| 8 | + "056", "057", "058", "059", "060", "061", "062", "063", "064", "065", "066", "067", "068", "069", |
| 9 | + "070", "071", "072", "073", "074", "075", "076", "077", "078", "079", "080", "081", "082", "083", |
| 10 | + "084", "085", "086", "087", "088", "089", "090", "091", "092", "093", "094", "095", "096", "097", |
| 11 | + "098", "099", |
| 12 | +]; |
| 13 | + |
| 14 | +#[test] |
| 15 | +fn test_digits_advance_100_iterations() { |
| 16 | + let mut buf = String::new(); |
| 17 | + let counter = Digits; |
| 18 | + for (idx, &expected_value) in DIGITS_VALUES.iter().enumerate() { |
| 19 | + let _ = counter.value_to_buffer(idx as u32, 3, &mut buf); |
| 20 | + assert_eq!(expected_value, &buf); |
| 21 | + buf.clear(); |
| 22 | + } |
| 23 | + |
| 24 | + for (idx, &expected_value) in DIGITS_VALUES.iter().enumerate() { |
| 25 | + assert_eq!(counter.string_to_value(expected_value), Some(idx as u32)); |
| 26 | + } |
| 27 | +} |
| 28 | + |
| 29 | +const UPPERCASE_ANSI_VALUES: [&str; 100] = [ |
| 30 | + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", |
| 31 | + "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", |
| 32 | + "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", |
| 33 | + "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", |
| 34 | + "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ", "CA", "CB", "CC", "CD", "CE", "CF", |
| 35 | + "CG", "CH", "CI", "CJ", "CK", "CL", "CM", "CN", "CO", "CP", "CQ", "CR", "CS", "CT", "CU", "CV", |
| 36 | +]; |
| 37 | + |
| 38 | +const LOWERCASE_ANSI_VALUES: [&str; 100] = [ |
| 39 | + "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", |
| 40 | + "t", "u", "v", "w", "x", "y", "z", "aa", "ab", "ac", "ad", "ae", "af", "ag", "ah", "ai", "aj", |
| 41 | + "ak", "al", "am", "an", "ao", "ap", "aq", "ar", "as", "at", "au", "av", "aw", "ax", "ay", "az", |
| 42 | + "ba", "bb", "bc", "bd", "be", "bf", "bg", "bh", "bi", "bj", "bk", "bl", "bm", "bn", "bo", "bp", |
| 43 | + "bq", "br", "bs", "bt", "bu", "bv", "bw", "bx", "by", "bz", "ca", "cb", "cc", "cd", "ce", "cf", |
| 44 | + "cg", "ch", "ci", "cj", "ck", "cl", "cm", "cn", "co", "cp", "cq", "cr", "cs", "ct", "cu", "cv", |
| 45 | +]; |
| 46 | + |
| 47 | +#[test] |
| 48 | +fn test_ansi_upper_advance_100_iterations() { |
| 49 | + let mut buf = String::new(); |
| 50 | + let counter = AnsiUpper; |
| 51 | + for (idx, &expected_value) in UPPERCASE_ANSI_VALUES.iter().enumerate() { |
| 52 | + let _ = counter.value_to_buffer(idx as u32 + 1, 1, &mut buf); |
| 53 | + assert_eq!(expected_value, &buf); |
| 54 | + buf.clear(); |
| 55 | + } |
| 56 | + |
| 57 | + for (idx, &expected_value) in UPPERCASE_ANSI_VALUES.iter().enumerate() { |
| 58 | + assert_eq!(counter.string_to_value(expected_value), Some(idx as u32 + 1)); |
| 59 | + } |
| 60 | +} |
| 61 | + |
| 62 | +#[test] |
| 63 | +fn test_ansi_lower_advance_100_iterations() { |
| 64 | + let mut buf = String::new(); |
| 65 | + let counter = AnsiLower; |
| 66 | + for (idx, &expected_value) in LOWERCASE_ANSI_VALUES.iter().enumerate() { |
| 67 | + let _ = counter.value_to_buffer(idx as u32 + 1, 1, &mut buf); |
| 68 | + assert_eq!(expected_value, &buf); |
| 69 | + buf.clear(); |
| 70 | + } |
| 71 | + |
| 72 | + for (idx, &expected_value) in LOWERCASE_ANSI_VALUES.iter().enumerate() { |
| 73 | + assert_eq!(counter.string_to_value(expected_value), Some(idx as u32 + 1)); |
| 74 | + } |
| 75 | +} |
| 76 | + |
| 77 | +const UPPERCASE_ROMAN_VALUES: [&str; 100] = [ |
| 78 | + "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII", "XIII", "XIV", "XV", |
| 79 | + "XVI", "XVII", "XVIII", "XIX", "XX", "XXI", "XXII", "XXIII", "XXIV", "XXV", "XXVI", "XXVII", |
| 80 | + "XXVIII", "XXIX", "XXX", "XXXI", "XXXII", "XXXIII", "XXXIV", "XXXV", "XXXVI", "XXXVII", |
| 81 | + "XXXVIII", "XXXIX", "XL", "XLI", "XLII", "XLIII", "XLIV", "XLV", "XLVI", "XLVII", "XLVIII", |
| 82 | + "XLIX", "L", "LI", "LII", "LIII", "LIV", "LV", "LVI", "LVII", "LVIII", "LIX", "LX", "LXI", |
| 83 | + "LXII", "LXIII", "LXIV", "LXV", "LXVI", "LXVII", "LXVIII", "LXIX", "LXX", "LXXI", "LXXII", |
| 84 | + "LXXIII", "LXXIV", "LXXV", "LXXVI", "LXXVII", "LXXVIII", "LXXIX", "LXXX", "LXXXI", "LXXXII", |
| 85 | + "LXXXIII", "LXXXIV", "LXXXV", "LXXXVI", "LXXXVII", "LXXXVIII", "LXXXIX", "XC", "XCI", "XCII", |
| 86 | + "XCIII", "XCIV", "XCV", "XCVI", "XCVII", "XCVIII", "XCIX", "C", |
| 87 | +]; |
| 88 | + |
| 89 | +const LOWERCASE_ROMAN_VALUES: [&str; 100] = [ |
| 90 | + "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix", "x", "xi", "xii", "xiii", "xiv", "xv", |
| 91 | + "xvi", "xvii", "xviii", "xix", "xx", "xxi", "xxii", "xxiii", "xxiv", "xxv", "xxvi", "xxvii", |
| 92 | + "xxviii", "xxix", "xxx", "xxxi", "xxxii", "xxxiii", "xxxiv", "xxxv", "xxxvi", "xxxvii", |
| 93 | + "xxxviii", "xxxix", "xl", "xli", "xlii", "xliii", "xliv", "xlv", "xlvi", "xlvii", "xlviii", |
| 94 | + "xlix", "l", "li", "lii", "liii", "liv", "lv", "lvi", "lvii", "lviii", "lix", "lx", "lxi", |
| 95 | + "lxii", "lxiii", "lxiv", "lxv", "lxvi", "lxvii", "lxviii", "lxix", "lxx", "lxxi", "lxxii", |
| 96 | + "lxxiii", "lxxiv", "lxxv", "lxxvi", "lxxvii", "lxxviii", "lxxix", "lxxx", "lxxxi", "lxxxii", |
| 97 | + "lxxxiii", "lxxxiv", "lxxxv", "lxxxvi", "lxxxvii", "lxxxviii", "lxxxix", "xc", "xci", "xcii", |
| 98 | + "xciii", "xciv", "xcv", "xcvi", "xcvii", "xcviii", "xcix", "c", |
| 99 | +]; |
| 100 | + |
| 101 | +#[test] |
| 102 | +fn test_roman_upper_advance_100_iterations() { |
| 103 | + let mut buf = String::new(); |
| 104 | + let counter = RomanUpper; |
| 105 | + for (idx, &expected_value) in UPPERCASE_ROMAN_VALUES.iter().enumerate() { |
| 106 | + let _ = counter.value_to_buffer(idx as u32 + 1, 1, &mut buf); |
| 107 | + assert_eq!(expected_value, &buf); |
| 108 | + buf.clear(); |
| 109 | + } |
| 110 | + |
| 111 | + for (idx, &expected_value) in UPPERCASE_ROMAN_VALUES.iter().enumerate() { |
| 112 | + assert_eq!(counter.string_to_value(expected_value), Some(idx as u32 + 1)); |
| 113 | + } |
| 114 | +} |
| 115 | + |
| 116 | +#[test] |
| 117 | +fn test_roman_lower_advance_100_iterations() { |
| 118 | + let mut buf = String::new(); |
| 119 | + let counter = RomanLower; |
| 120 | + for (idx, &expected_value) in LOWERCASE_ROMAN_VALUES.iter().enumerate() { |
| 121 | + let _ = counter.value_to_buffer(idx as u32 + 1, 1, &mut buf); |
| 122 | + assert_eq!(expected_value, &buf); |
| 123 | + buf.clear(); |
| 124 | + } |
| 125 | + |
| 126 | + for (idx, &expected_value) in LOWERCASE_ROMAN_VALUES.iter().enumerate() { |
| 127 | + assert_eq!(counter.string_to_value(expected_value), Some(idx as u32 + 1)); |
| 128 | + } |
| 129 | +} |
| 130 | + |
| 131 | +const UPPERCASE_CYRILLIC_VALUES: [&str; 100] = [ |
| 132 | + "А", "Б", "В", "Г", "Д", "Е", "Ж", "З", "И", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", |
| 133 | + "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Э", "Ю", "Я", "АА", "АБ", "АВ", "АГ", "АД", "АЕ", "АЖ", "АЗ", |
| 134 | + "АИ", "АК", "АЛ", "АМ", "АН", "АО", "АП", "АР", "АС", "АТ", "АУ", "АФ", "АХ", "АЦ", "АЧ", "АШ", |
| 135 | + "АЩ", "АЭ", "АЮ", "АЯ", "БА", "ББ", "БВ", "БГ", "БД", "БЕ", "БЖ", "БЗ", "БИ", "БК", "БЛ", "БМ", |
| 136 | + "БН", "БО", "БП", "БР", "БС", "БТ", "БУ", "БФ", "БХ", "БЦ", "БЧ", "БШ", "БЩ", "БЭ", "БЮ", "БЯ", |
| 137 | + "ВА", "ВБ", "ВВ", "ВГ", "ВД", "ВЕ", "ВЖ", "ВЗ", "ВИ", "ВК", "ВЛ", "ВМ", "ВН", "ВО", "ВП", "ВР", |
| 138 | +]; |
| 139 | + |
| 140 | +const LOWERCASE_CYRILLIC_VALUES: [&str; 100] = [ |
| 141 | + "а", "б", "в", "г", "д", "е", "ж", "з", "и", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", |
| 142 | + "ф", "х", "ц", "ч", "ш", "щ", "э", "ю", "я", "аа", "аб", "ав", "аг", "ад", "ае", "аж", "аз", |
| 143 | + "аи", "ак", "ал", "ам", "ан", "ао", "ап", "ар", "ас", "ат", "ау", "аф", "ах", "ац", "ач", "аш", |
| 144 | + "ащ", "аэ", "аю", "ая", "ба", "бб", "бв", "бг", "бд", "бе", "бж", "бз", "би", "бк", "бл", "бм", |
| 145 | + "бн", "бо", "бп", "бр", "бс", "бт", "бу", "бф", "бх", "бц", "бч", "бш", "бщ", "бэ", "бю", "бя", |
| 146 | + "ва", "вб", "вв", "вг", "вд", "ве", "вж", "вз", "ви", "вк", "вл", "вм", "вн", "во", "вп", "вр", |
| 147 | +]; |
| 148 | + |
| 149 | +#[test] |
| 150 | +fn test_cyrillic_upper_advance_100_iterations() { |
| 151 | + let mut buf = String::new(); |
| 152 | + let counter = CyrillicUpper; |
| 153 | + for (idx, &expected_value) in UPPERCASE_CYRILLIC_VALUES.iter().enumerate() { |
| 154 | + let _ = counter.value_to_buffer(idx as u32 + 1, 1, &mut buf); |
| 155 | + assert_eq!(expected_value, &buf); |
| 156 | + buf.clear(); |
| 157 | + } |
| 158 | + |
| 159 | + for (idx, &expected_value) in UPPERCASE_CYRILLIC_VALUES.iter().enumerate() { |
| 160 | + assert_eq!(counter.string_to_value(expected_value), Some(idx as u32 + 1)); |
| 161 | + } |
| 162 | +} |
| 163 | + |
| 164 | +#[test] |
| 165 | +fn test_cyrillic_lower_advance_100_iterations() { |
| 166 | + let mut buf = String::new(); |
| 167 | + let counter = CyrillicLower; |
| 168 | + for (idx, &expected_value) in LOWERCASE_CYRILLIC_VALUES.iter().enumerate() { |
| 169 | + let _ = counter.value_to_buffer(idx as u32 + 1, 1, &mut buf); |
| 170 | + assert_eq!(expected_value, &buf); |
| 171 | + buf.clear(); |
| 172 | + } |
| 173 | + |
| 174 | + for (idx, &expected_value) in LOWERCASE_CYRILLIC_VALUES.iter().enumerate() { |
| 175 | + assert_eq!(counter.string_to_value(expected_value), Some(idx as u32 + 1)); |
| 176 | + } |
| 177 | +} |
0 commit comments