feature/plural: fixed bug

bug in tests and API cancelled each other out

Change-Id: I94520066f30180448c84bc195ea3b6797432d452
Reviewed-on: https://go-review.googlesource.com/58412
Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
Reviewed-by: Nigel Tao <nigeltao@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/feature/plural/plural.go b/feature/plural/plural.go
index 2b4cfe3..7273091 100644
--- a/feature/plural/plural.go
+++ b/feature/plural/plural.go
@@ -113,13 +113,12 @@
 //      100000.00  []byte{1}           6......3
 func (p *Rules) MatchDigits(t language.Tag, digits []byte, exp, scale int) Form {
 	index, _ := language.CompactIndex(t)
-	endN := len(digits) + exp
 
 	// Differentiate up to including mod 1000000 for the integer part.
-	n := getIntApprox(digits, 0, endN, 6, 1000000)
+	n := getIntApprox(digits, 0, exp, 6, 1000000)
 
 	// Differentiate up to including mod 100 for the fractional part.
-	f := getIntApprox(digits, endN, endN+scale, 2, 100)
+	f := getIntApprox(digits, exp, exp+scale, 2, 100)
 
 	return matchPlural(p, index, n, f, scale)
 }
diff --git a/feature/plural/plural_test.go b/feature/plural/plural_test.go
index e5524c5..2b30e9d 100644
--- a/feature/plural/plural_test.go
+++ b/feature/plural/plural_test.go
@@ -28,6 +28,8 @@
 		{"123", 0, 2, 2, 12},
 		{"123", 3, 4, 2, 0},
 		{"12345", 3, 4, 2, 4},
+		{"40", 0, 1, 2, 4},
+		{"1", 0, 7, 2, big},
 
 		{"123", 0, 5, 2, big},
 		{"123", 0, 5, 3, big},
@@ -114,7 +116,7 @@
 						for i := range digits {
 							digits[i] -= '0'
 						}
-						if f := p.MatchDigits(tag, digits, 0, 0); f != Form(tc.form) {
+						if f := p.MatchDigits(tag, digits, len(digits), 0); f != Form(tc.form) {
 							t.Errorf("MatchDigits: got %v; want %v", f, Form(tc.form))
 						}
 					})
@@ -142,11 +144,12 @@
 						if f := p.matchComponents(tag, n/m, n%m, scale); f != Form(tc.form) {
 							t.Errorf("matchComponents: got %v; want %v", f, Form(tc.form))
 						}
+						exp := strings.IndexByte(num, '.')
 						digits := []byte(strings.Replace(num, ".", "", 1))
 						for i := range digits {
 							digits[i] -= '0'
 						}
-						if f := p.MatchDigits(tag, digits, -scale, scale); f != Form(tc.form) {
+						if f := p.MatchDigits(tag, digits, exp, scale); f != Form(tc.form) {
 							t.Errorf("MatchDigits: got %v; want %v", f, Form(tc.form))
 						}
 					})