@@ -9,6 +9,8 @@ namespace UnitsNet.Tests
99{
1010 public class FeetInchesTests
1111 {
12+ private static readonly CultureInfo EnglishUs = new ( "en-US" , useUserOverride : false ) ;
13+ private static readonly CultureInfo GermanSwitzerland = new ( "de-CH" , useUserOverride : false ) ;
1214 private const double FeetInOneMeter = 3.28084 ;
1315 private const double InchesInOneMeter = 39.37007874 ;
1416 private const double FeetTolerance = 1e-5 ;
@@ -33,42 +35,42 @@ public void FeetInchesRoundTrip()
3335
3436 public static IEnumerable < object [ ] > ValidData => new List < object [ ] >
3537 {
36- new object [ ] { "1'" , 1 , new CultureInfo ( "en-US" , false ) } , // Feet only
37- new object [ ] { "1′" , 1 , new CultureInfo ( "en-US" , false ) } , // Feet only
38- new object [ ] { "1,000′" , 1000 , new CultureInfo ( "en-US" , false ) } , // Feet only, with seperator
39- new object [ ] { "1e3'" , 1000 , new CultureInfo ( "en-US" , false ) } , // Feet only, exponential notation
40- new object [ ] { "1\" " , 0.08333333 , new CultureInfo ( "en-US" , false ) } , // Inches only
41- new object [ ] { "1″" , 0.08333333 , new CultureInfo ( "en-US" , false ) } , // Inches only
42- new object [ ] { "0' 1\" " , 0.08333333 , new CultureInfo ( "en-US" , false ) } , // Inches only
43- new object [ ] { "0' 1″" , 0.08333333 , new CultureInfo ( "en-US" , false ) } , // Inches only
44- new object [ ] { "0′ 1\" " , 0.08333333 , new CultureInfo ( "en-US" , false ) } , // Inches only
45- new object [ ] { "0′ 1″" , 0.08333333 , new CultureInfo ( "en-US" , false ) } , // Inches only
46- new object [ ] { "1' 1\" " , 1.08333333 , new CultureInfo ( "en-US" , false ) } , // Normal form
47- new object [ ] { "1′ 1″" , 1.08333333 , new CultureInfo ( "en-US" , false ) } , // Normal form
48- new object [ ] { " 1′ 1″ " , 1.08333333 , new CultureInfo ( "en-US" , false ) } , // Normal form, requires trimming
49- new object [ ] { "1'1\" " , 1.08333333 , new CultureInfo ( "en-US" , false ) } , // Without space
50- new object [ ] { "1′1″" , 1.08333333 , new CultureInfo ( "en-US" , false ) } , // Without space
51- new object [ ] { "1 ft 1 in" , 1.08333333 , new CultureInfo ( "en-US" , false ) } ,
52- new object [ ] { "1ft 1in" , 1.08333333 , new CultureInfo ( "en-US" , false ) } ,
53- new object [ ] { "-1'" , - 1 , new CultureInfo ( "en-US" , false ) } , // Feet only
54- new object [ ] { "-1′" , - 1 , new CultureInfo ( "en-US" , false ) } , // Feet only
55- new object [ ] { "-1,000′" , - 1000 , new CultureInfo ( "en-US" , false ) } , // Feet only, with seperator
56- new object [ ] { "-1e3'" , - 1000 , new CultureInfo ( "en-US" , false ) } , // Feet only, exponential notation
57- new object [ ] { "-1\" " , - 0.08333333 , new CultureInfo ( "en-US" , false ) } , // Inches only
58- new object [ ] { "-1″" , - 0.08333333 , new CultureInfo ( "en-US" , false ) } , // Inches only
59- new object [ ] { "-0' 1\" " , - 0.08333333 , new CultureInfo ( "en-US" , false ) } , // Inches only
60- new object [ ] { "-0' 1″" , - 0.08333333 , new CultureInfo ( "en-US" , false ) } , // Inches only
61- new object [ ] { "-0′ 1\" " , - 0.08333333 , new CultureInfo ( "en-US" , false ) } , // Inches only
62- new object [ ] { "-0′ 1″" , - 0.08333333 , new CultureInfo ( "en-US" , false ) } , // Inches only
63- new object [ ] { "-1' 1\" " , - 1.08333333 , new CultureInfo ( "en-US" , false ) } , // Normal form
64- new object [ ] { "-1′ 1″" , - 1.08333333 , new CultureInfo ( "en-US" , false ) } , // Normal form
65- new object [ ] { " -1′ 1″ " , - 1.08333333 , new CultureInfo ( "en-US" , false ) } , // Normal form, requires trimming
66- new object [ ] { "-1'1\" " , - 1.08333333 , new CultureInfo ( "en-US" , false ) } , // Without space
67- new object [ ] { "-1′1″" , - 1.08333333 , new CultureInfo ( "en-US" , false ) } , // Without space
68- new object [ ] { "-1 ft 1 in" , - 1.08333333 , new CultureInfo ( "en-US" , false ) } ,
69- new object [ ] { "-1ft 1in" , - 1.08333333 , new CultureInfo ( "en-US" , false ) } ,
70- new object [ ] { "1’000′" , 1000 , new CultureInfo ( "de-CH" , false ) } , // Feet only, with seperator
71- new object [ ] { "1’000′ 6\" " , 1000.5 , new CultureInfo ( "de-CH" , false ) } , // Normal form, using separators for culture
38+ new object [ ] { "1'" , 1 , EnglishUs } , // Feet only
39+ new object [ ] { "1′" , 1 , EnglishUs } , // Feet only
40+ new object [ ] { "1,000′" , 1000 , EnglishUs } , // Feet only, with seperator
41+ new object [ ] { "1e3'" , 1000 , EnglishUs } , // Feet only, exponential notation
42+ new object [ ] { "1\" " , 0.08333333 , EnglishUs } , // Inches only
43+ new object [ ] { "1″" , 0.08333333 , EnglishUs } , // Inches only
44+ new object [ ] { "0' 1\" " , 0.08333333 , EnglishUs } , // Inches only
45+ new object [ ] { "0' 1″" , 0.08333333 , EnglishUs } , // Inches only
46+ new object [ ] { "0′ 1\" " , 0.08333333 , EnglishUs } , // Inches only
47+ new object [ ] { "0′ 1″" , 0.08333333 , EnglishUs } , // Inches only
48+ new object [ ] { "1' 1\" " , 1.08333333 , EnglishUs } , // Normal form
49+ new object [ ] { "1′ 1″" , 1.08333333 , EnglishUs } , // Normal form
50+ new object [ ] { " 1′ 1″ " , 1.08333333 , EnglishUs } , // Normal form, requires trimming
51+ new object [ ] { "1'1\" " , 1.08333333 , EnglishUs } , // Without space
52+ new object [ ] { "1′1″" , 1.08333333 , EnglishUs } , // Without space
53+ new object [ ] { "1 ft 1 in" , 1.08333333 , EnglishUs } ,
54+ new object [ ] { "1ft 1in" , 1.08333333 , EnglishUs } ,
55+ new object [ ] { "-1'" , - 1 , EnglishUs } , // Feet only
56+ new object [ ] { "-1′" , - 1 , EnglishUs } , // Feet only
57+ new object [ ] { "-1,000′" , - 1000 , EnglishUs } , // Feet only, with seperator
58+ new object [ ] { "-1e3'" , - 1000 , EnglishUs } , // Feet only, exponential notation
59+ new object [ ] { "-1\" " , - 0.08333333 , EnglishUs } , // Inches only
60+ new object [ ] { "-1″" , - 0.08333333 , EnglishUs } , // Inches only
61+ new object [ ] { "-0' 1\" " , - 0.08333333 , EnglishUs } , // Inches only
62+ new object [ ] { "-0' 1″" , - 0.08333333 , EnglishUs } , // Inches only
63+ new object [ ] { "-0′ 1\" " , - 0.08333333 , EnglishUs } , // Inches only
64+ new object [ ] { "-0′ 1″" , - 0.08333333 , EnglishUs } , // Inches only
65+ new object [ ] { "-1' 1\" " , - 1.08333333 , EnglishUs } , // Normal form
66+ new object [ ] { "-1′ 1″" , - 1.08333333 , EnglishUs } , // Normal form
67+ new object [ ] { " -1′ 1″ " , - 1.08333333 , EnglishUs } , // Normal form, requires trimming
68+ new object [ ] { "-1'1\" " , - 1.08333333 , EnglishUs } , // Without space
69+ new object [ ] { "-1′1″" , - 1.08333333 , EnglishUs } , // Without space
70+ new object [ ] { "-1 ft 1 in" , - 1.08333333 , EnglishUs } ,
71+ new object [ ] { "-1ft 1in" , - 1.08333333 , EnglishUs } ,
72+ new object [ ] { "1’000′" , 1000 , GermanSwitzerland } , // Feet only, with seperator
73+ new object [ ] { "1’000′ 6\" " , 1000.5 , GermanSwitzerland } , // Normal form, using separators for culture
7274 } ;
7375
7476 [ Theory ]
@@ -81,22 +83,22 @@ public void TryParseFeetInches(string str, double expectedFeet, CultureInfo form
8183
8284 public static IEnumerable < object [ ] > InvalidData => new List < object [ ] >
8385 {
84- new object [ ] { "a" , new CultureInfo ( "en-US" , false ) } , // Missing or invalid apostrophe or double prime chars
85- new object [ ] { "1" , new CultureInfo ( "en-US" , false ) } ,
86- new object [ ] { "1`" , new CultureInfo ( "en-US" , false ) } ,
87- new object [ ] { "1^" , new CultureInfo ( "en-US" , false ) } ,
88- new object [ ] { "1' 1'" , new CultureInfo ( "en-US" , false ) } , // Feet apostrophe twice
89- new object [ ] { "1′ 1′" , new CultureInfo ( "en-US" , false ) } ,
90- new object [ ] { "1' 1" , new CultureInfo ( "en-US" , false ) } , // No inches double prime
91- new object [ ] { "1′ 1" , new CultureInfo ( "en-US" , false ) } ,
92- new object [ ] { "1′ 1`" , new CultureInfo ( "en-US" , false ) } , // Invalid inches double prime
93- new object [ ] { "1' 1`" , new CultureInfo ( "en-US" , false ) } ,
94- new object [ ] { "1'1'" , new CultureInfo ( "en-US" , false ) } , // Same without space
95- new object [ ] { "1′1′" , new CultureInfo ( "en-US" , false ) } ,
96- new object [ ] { "1'1" , new CultureInfo ( "en-US" , false ) } ,
97- new object [ ] { "1′1" , new CultureInfo ( "en-US" , false ) } ,
98- new object [ ] { "1′1`" , new CultureInfo ( "en-US" , false ) } ,
99- new object [ ] { "1'1`" , new CultureInfo ( "en-US" , false ) }
86+ new object [ ] { "a" , EnglishUs } , // Missing or invalid apostrophe or double prime chars
87+ new object [ ] { "1" , EnglishUs } ,
88+ new object [ ] { "1`" , EnglishUs } ,
89+ new object [ ] { "1^" , EnglishUs } ,
90+ new object [ ] { "1' 1'" , EnglishUs } , // Feet apostrophe twice
91+ new object [ ] { "1′ 1′" , EnglishUs } ,
92+ new object [ ] { "1' 1" , EnglishUs } , // No inches double prime
93+ new object [ ] { "1′ 1" , EnglishUs } ,
94+ new object [ ] { "1′ 1`" , EnglishUs } , // Invalid inches double prime
95+ new object [ ] { "1' 1`" , EnglishUs } ,
96+ new object [ ] { "1'1'" , EnglishUs } , // Same without space
97+ new object [ ] { "1′1′" , EnglishUs } ,
98+ new object [ ] { "1'1" , EnglishUs } ,
99+ new object [ ] { "1′1" , EnglishUs } ,
100+ new object [ ] { "1′1`" , EnglishUs } ,
101+ new object [ ] { "1'1`" , EnglishUs }
100102 } ;
101103
102104 [ Theory ]
0 commit comments