51 lines
1.0 KiB
Go
51 lines
1.0 KiB
Go
|
package octal
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
var testCases = []struct {
|
||
|
input string
|
||
|
expectedNum int64
|
||
|
expectErr bool
|
||
|
}{
|
||
|
{"1", 1, false},
|
||
|
{"10", 8, false},
|
||
|
{"1234567", 342391, false},
|
||
|
{"carrot", 0, true},
|
||
|
{"35682", 0, true},
|
||
|
}
|
||
|
|
||
|
func TestParseOctal(t *testing.T) {
|
||
|
for _, test := range testCases {
|
||
|
actualNum, actualErr := ParseOctal(test.input)
|
||
|
if actualNum != test.expectedNum {
|
||
|
t.Fatalf("ParseOctal(%s): expected[%d], actual [%d]",
|
||
|
test.input, test.expectedNum, actualNum)
|
||
|
}
|
||
|
|
||
|
// if we expect an error and there isn't one
|
||
|
if test.expectErr && actualErr == nil {
|
||
|
t.Errorf("ParseOctal(%s): expected an error, but error is nil", test.input)
|
||
|
}
|
||
|
// if we don't expect an error and there is one
|
||
|
if !test.expectErr && actualErr != nil {
|
||
|
t.Errorf("ParseOctal(%s): expected no error, but error is: %s", test.input, actualErr)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func BenchmarkParseOctal(b *testing.B) {
|
||
|
b.StopTimer()
|
||
|
|
||
|
for _, test := range testCases {
|
||
|
b.StartTimer()
|
||
|
|
||
|
for i := 0; i < b.N; i++ {
|
||
|
ParseOctal(test.input)
|
||
|
}
|
||
|
|
||
|
b.StopTimer()
|
||
|
}
|
||
|
}
|