1/* 2 * Copyright 2021 Haiku, Inc. 3 * Distributed under the terms of the MIT License. 4 */ 5#include "NumberFormatTest.h" 6 7#include <NumberFormat.h> 8#include <Locale.h> 9 10#include <cppunit/TestCaller.h> 11#include <cppunit/TestSuite.h> 12 13 14NumberFormatTest::NumberFormatTest() 15{ 16} 17 18 19NumberFormatTest::~NumberFormatTest() 20{ 21} 22 23 24void 25NumberFormatTest::TestPercentTurkish() 26{ 27 _TestGeneralPercent("tr", "%2"); 28} 29 30 31void 32NumberFormatTest::TestPercentEnglish() 33{ 34 _TestGeneralPercent("en_US", "2%"); 35} 36 37 38void 39NumberFormatTest::TestPercentGerman() 40{ 41 _TestGeneralPercent("de", "2\xc2\xa0%"); 42 // 2<non-breaking-space>% 43} 44 45 46void 47NumberFormatTest::_TestGeneralPercent(const char* languageCode, 48 const char* expected) 49{ 50 // GIVEN 51 BLanguage turkishLanguage(languageCode); 52 BFormattingConventions formattingConventions(languageCode); 53 BLocale turkishLocale(&turkishLanguage, &formattingConventions); 54 BNumberFormat numberFormat(&turkishLocale); 55 BString output; 56 double input = 0.025; 57 58 // WHEN 59 status_t result = numberFormat.FormatPercent(output, input); 60 61 // THEN 62 CPPUNIT_ASSERT_EQUAL(B_OK, result); 63 CPPUNIT_ASSERT_EQUAL(BString(expected), output); 64} 65 66 67/*static*/ void 68NumberFormatTest::AddTests(BTestSuite& parent) 69{ 70 CppUnit::TestSuite& suite = *new CppUnit::TestSuite("NumberFormatTest"); 71 72 suite.addTest(new CppUnit::TestCaller<NumberFormatTest>( 73 "NumberFormatTest::TestPercentTurkish", 74 &NumberFormatTest::TestPercentTurkish)); 75 suite.addTest(new CppUnit::TestCaller<NumberFormatTest>( 76 "NumberFormatTest::TestPercentEnglish", 77 &NumberFormatTest::TestPercentEnglish)); 78 suite.addTest(new CppUnit::TestCaller<NumberFormatTest>( 79 "NumberFormatTest::TestPercentGerman", 80 &NumberFormatTest::TestPercentGerman)); 81 82 parent.addTest("NumberFormatTest", &suite); 83} 84