1//go:build go1.7 2// +build go1.7 3 4package ini 5 6import ( 7 "testing" 8) 9 10func TestNumberHelper(t *testing.T) { 11 cases := []struct { 12 b []rune 13 determineIndex int 14 15 expectedExists []bool 16 expectedErrors []bool 17 expectedCorrects []bool 18 expectedNegative bool 19 expectedBase int 20 }{ 21 { 22 b: []rune("-10"), 23 determineIndex: 0, 24 expectedExists: []bool{ 25 false, 26 false, 27 false, 28 }, 29 expectedErrors: []bool{ 30 false, 31 false, 32 false, 33 }, 34 expectedCorrects: []bool{ 35 true, 36 true, 37 true, 38 }, 39 expectedNegative: true, 40 expectedBase: 10, 41 }, 42 { 43 b: []rune("0x10"), 44 determineIndex: 1, 45 expectedExists: []bool{ 46 false, 47 false, 48 true, 49 true, 50 }, 51 expectedErrors: []bool{ 52 false, 53 false, 54 false, 55 false, 56 }, 57 expectedCorrects: []bool{ 58 true, 59 true, 60 true, 61 true, 62 }, 63 expectedNegative: false, 64 expectedBase: 16, 65 }, 66 { 67 b: []rune("0b101"), 68 determineIndex: 1, 69 expectedExists: []bool{ 70 false, 71 false, 72 true, 73 true, 74 true, 75 }, 76 expectedErrors: []bool{ 77 false, 78 false, 79 false, 80 false, 81 false, 82 }, 83 expectedCorrects: []bool{ 84 true, 85 true, 86 true, 87 true, 88 true, 89 }, 90 expectedNegative: false, 91 expectedBase: 2, 92 }, 93 { 94 b: []rune("0o271"), 95 determineIndex: 1, 96 expectedExists: []bool{ 97 false, 98 false, 99 true, 100 true, 101 true, 102 }, 103 expectedErrors: []bool{ 104 false, 105 false, 106 false, 107 false, 108 false, 109 }, 110 expectedCorrects: []bool{ 111 true, 112 true, 113 true, 114 true, 115 true, 116 }, 117 expectedNegative: false, 118 expectedBase: 8, 119 }, 120 { 121 b: []rune("99"), 122 determineIndex: -1, 123 expectedExists: []bool{ 124 false, 125 false, 126 }, 127 expectedErrors: []bool{ 128 false, 129 false, 130 }, 131 expectedCorrects: []bool{ 132 true, 133 true, 134 }, 135 expectedNegative: false, 136 expectedBase: 10, 137 }, 138 { 139 b: []rune("0o2o71"), 140 determineIndex: 1, 141 expectedExists: []bool{ 142 false, 143 false, 144 true, 145 true, 146 true, 147 true, 148 }, 149 expectedErrors: []bool{ 150 false, 151 false, 152 false, 153 false, 154 false, 155 true, 156 }, 157 expectedCorrects: []bool{ 158 true, 159 true, 160 true, 161 false, 162 true, 163 true, 164 }, 165 expectedNegative: false, 166 expectedBase: 8, 167 }, 168 } 169 170 for _, c := range cases { 171 helper := numberHelper{} 172 173 for i := 0; i < len(c.b); i++ { 174 if e, a := c.expectedExists[i], helper.Exists(); e != a { 175 t.Errorf("expected %t, but received %t", e, a) 176 } 177 178 if i == c.determineIndex { 179 if e, a := c.expectedErrors[i], helper.Determine(c.b[i]) != nil; e != a { 180 t.Errorf("expected %t, but received %t", e, a) 181 } 182 } else { 183 if e, a := c.expectedCorrects[i], helper.CorrectByte(c.b[i]); e != a { 184 t.Errorf("expected %t, but received %t", e, a) 185 } 186 } 187 } 188 189 if e, a := c.expectedNegative, helper.IsNegative(); e != a { 190 t.Errorf("expected %t, but received %t", e, a) 191 } 192 193 if e, a := c.expectedBase, helper.Base(); e != a { 194 t.Errorf("expected %d, but received %d", e, a) 195 } 196 } 197} 198