From abc546178dedf92ef87d8ae9f2e6020948f32c95 Mon Sep 17 00:00:00 2001 From: vinchent Date: Sun, 22 Sep 2024 21:51:40 +0200 Subject: [PATCH] roman: fix the number range --- roman/roman.go | 8 ++++---- roman/roman_test.go | 11 ++++++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/roman/roman.go b/roman/roman.go index 79db7b5..63e8ec1 100644 --- a/roman/roman.go +++ b/roman/roman.go @@ -3,7 +3,7 @@ package roman import "strings" type RomanNumeral struct { - Value int + Value uint16 Symbol string } @@ -24,7 +24,7 @@ var allRomanNumerals = []RomanNumeral{ {1, "I"}, } -func ConvertToRoman(arabic int) string { +func ConvertToRoman(arabic uint16) string { var converted strings.Builder for _, numeral := range allRomanNumerals { for arabic >= numeral.Value { @@ -36,8 +36,8 @@ func ConvertToRoman(arabic int) string { return converted.String() } -func ConvertToArabic(roman string) int { - var converted int +func ConvertToArabic(roman string) uint16 { + var converted uint16 for _, numeral := range allRomanNumerals { for strings.HasPrefix(roman, numeral.Symbol) { converted += numeral.Value diff --git a/roman/roman_test.go b/roman/roman_test.go index b113d17..d6609bb 100644 --- a/roman/roman_test.go +++ b/roman/roman_test.go @@ -7,7 +7,7 @@ import ( ) var cases = []struct { - Arabic int + Arabic uint16 Roman string }{ {Arabic: 1, Roman: "I"}, @@ -68,13 +68,18 @@ func TestConvertingToArabic(t *testing.T) { } func TestPropertiesOfConversion(t *testing.T) { - assertion := func(arabic int) bool { + assertion := func(arabic uint16) bool { + if arabic > 3999 { + return true + } roman := ConvertToRoman(arabic) fromRoman := ConvertToArabic(roman) return fromRoman == arabic } - if err := quick.Check(assertion, nil); err != nil { + if err := quick.Check(assertion, &quick.Config{ + MaxCount: 1000, + }); err != nil { t.Error("failed checks", err) } }