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