@ -1,6 +1,6 @@
/ *
XOWA: the XOWA Offline Wiki Application
Copyright ( C ) 2012 - 20 17 gnosygnu @gmail.com
Copyright ( C ) 2012 - 20 20 gnosygnu @gmail.com
XOWA is licensed under the terms of the General Public License ( GPL ) Version 3 ,
or alternatively under the terms of the Apache License Version 2.0 .
@ -13,75 +13,78 @@ The terms of each license can be found in the source code repository:
GPLv3 License : https : //github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
Apache License : https : //github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
* /
package gplx ;
import org.junit.* ;
public class Decimal_adp__tst {
private final Decimal_adp__fxt fxt = new Decimal_adp__fxt ( ) ;
@Test public void divide_ ( ) {
fxt . Test_divide ( 1 , 1000 , "0.001" ) ;
fxt . Test_divide ( 1 , 3 , "0.33333333333333" ) ;
fxt . Test_divide ( 1 , 7 , "0.14285714285714" ) ;
}
@Test public void base1000_ ( ) {
fxt . Test_base_1000 ( 1000 , "1" ) ;
fxt . Test_base_1000 ( 1234 , "1.234" ) ;
fxt . Test_base_1000 ( 123 , "0.123" ) ;
}
@Test public void parts_ ( ) {
fxt . Test_parts ( 1 , 0 , "1" ) ;
fxt . Test_parts ( 1 , 2 , "1.2" ) ;
fxt . Test_parts ( 1 , 23 , "1.23" ) ;
fxt . Test_parts ( 123 , 4567 , "123.4567" ) ;
}
@Test public void parse ( ) {
fxt . Test_parse ( "1" , "1" ) ;
fxt . Test_parse ( "1.2" , "1.2" ) ;
fxt . Test_parse ( "0.1" , "0.1" ) ;
fxt . Test_parse ( "1.2E1" , "12" ) ;
}
@Test public void Truncate_decimal ( ) {
fxt . Test_truncate_decimal ( "1" , "1" ) ;
fxt . Test_truncate_decimal ( "1.1" , "1" ) ;
fxt . Test_truncate_decimal ( "1.9" , "1" ) ;
}
@Test public void Fraction1000 ( ) {
fxt . Test_frac_1000 ( 1 , 1000 , 1 ) ; // 0.001
fxt . Test_frac_1000 ( 1 , 3 , 333 ) ; // 0.33333333
fxt . Test_frac_1000 ( 1234 , 1000 , 234 ) ; // 1.234
fxt . Test_frac_1000 ( 12345 , 10000 , 234 ) ; // 1.2345
}
@Test public void Lt ( ) {
fxt . Test_comp_lt ( 1 , 123 , 2 , true ) ;
fxt . Test_comp_lt ( 1 , 99999999 , 2 , true ) ;
}
@Test public void To_str_fmt ( ) {
fxt . Test_to_str_fmt ( 1 , 2 , "0.0" , "0.5" ) ;
fxt . Test_to_str_fmt ( 1 , 3 , "0.0" , "0.3" ) ;
fxt . Test_to_str_fmt ( 10000 , 7 , "0,000.000" , "1,428.571" ) ;
fxt . Test_to_str_fmt ( 1 , 2 , "00.00" , "00.50" ) ;
}
@Test public void Round ( ) {
fxt . Test_round ( "123.456" , 3 , "123.456" ) ;
fxt . Test_round ( "123.456" , 2 , "123.46" ) ;
fxt . Test_round ( "123.456" , 1 , "123.5" ) ;
fxt . Test_round ( "123.456" , 0 , "123" ) ;
fxt . Test_round ( "123.456" , - 1 , "120" ) ;
fxt . Test_round ( "123.456" , - 2 , "100" ) ;
fxt . Test_round ( "123.456" , - 3 , "0" ) ;
fxt . Test_round ( "6" , - 1 , "10" ) ;
fxt . Test_round ( "5" , - 1 , "10" ) ;
fxt . Test_round ( "6" , - 2 , "0" ) ;
}
}
class Decimal_adp__fxt {
public void Test_divide ( int lhs , int rhs , String expd ) { Tfds . Eq ( expd , Decimal_adp_ . divide_ ( lhs , rhs ) . To_str ( ) ) ; }
public void Test_base_1000 ( int val , String expd ) { Tfds . Eq ( expd , Decimal_adp_ . base1000_ ( val ) . To_str ( ) ) ; }
public void Test_parts ( int num , int fracs , String expd ) { Tfds . Eq ( expd , Decimal_adp_ . parts_ ( num , fracs ) . To_str ( ) ) ; }
public void Test_parse ( String raw , String expd ) { Tfds . Eq ( expd , Decimal_adp_ . parse ( raw ) . To_str ( ) ) ; }
public void Test_truncate_decimal ( String raw , String expd ) { Tfds . Eq ( Decimal_adp_ . parse ( expd ) . To_str ( ) , Decimal_adp_ . parse ( raw ) . Truncate ( ) . To_str ( ) ) ; }
public void Test_frac_1000 ( int lhs , int rhs , int expd ) { Tfds . Eq ( expd , Decimal_adp_ . divide_ ( lhs , rhs ) . Frac_1000 ( ) ) ; }
public void Test_comp_lt ( int lhsNum , int lhsFrc , int rhs , boolean expd ) { Tfds . Eq ( expd , Decimal_adp_ . parts_ ( lhsNum , lhsFrc ) . Comp_lt ( rhs ) ) ; }
public void Test_to_str_fmt ( int l , int r , String fmt , String expd ) { Tfds . Eq ( expd , Decimal_adp_ . divide_ ( l , r ) . To_str ( fmt ) ) ; }
public void Test_round ( String raw , int places , String expd ) { Tfds . Eq_str ( expd , Decimal_adp_ . parse ( raw ) . Round ( places ) . To_str ( ) , "round" ) ; }
}
package gplx ;
import org.junit.* ;
public class Decimal_adp__tst {
private final Decimal_adp__fxt fxt = new Decimal_adp__fxt ( ) ;
@Test public void divide_ ( ) {
fxt . Test_divide ( 1 , 1000 , "0.001" ) ;
fxt . Test_divide ( 1 , 3 , "0.33333333333333" ) ;
fxt . Test_divide ( 1 , 7 , "0.14285714285714" ) ;
}
@Test public void base1000_ ( ) {
fxt . Test_base_1000 ( 1000 , "1" ) ;
fxt . Test_base_1000 ( 1234 , "1.234" ) ;
fxt . Test_base_1000 ( 123 , "0.123" ) ;
}
@Test public void parts_ ( ) {
fxt . Test_parts ( 1 , 0 , "1" ) ;
fxt . Test_parts ( 1 , 2 , "1.2" ) ;
fxt . Test_parts ( 1 , 23 , "1.23" ) ;
fxt . Test_parts ( 123 , 4567 , "123.4567" ) ;
}
@Test public void parse ( ) {
fxt . Test_parse ( "1" , "1" ) ;
fxt . Test_parse ( "1.2" , "1.2" ) ;
fxt . Test_parse ( "0.1" , "0.1" ) ;
fxt . Test_parse ( "1.2E1" , "12" ) ;
fxt . Test_parse ( "1.2e1" , "12" ) ; // 2020-08-27|ISSUE#:565|Parse 'e' as 'E'; PAGE:en.w:Huntington_Plaza
}
@Test public void Truncate_decimal ( ) {
fxt . Test_truncate_decimal ( "1" , "1" ) ;
fxt . Test_truncate_decimal ( "1.1" , "1" ) ;
fxt . Test_truncate_decimal ( "1.9" , "1" ) ;
}
@Test public void Fraction1000 ( ) {
fxt . Test_frac_1000 ( 1 , 1000 , 1 ) ; // 0.001
fxt . Test_frac_1000 ( 1 , 3 , 333 ) ; // 0.33333333
fxt . Test_frac_1000 ( 1234 , 1000 , 234 ) ; // 1.234
fxt . Test_frac_1000 ( 12345 , 10000 , 234 ) ; // 1.2345
}
@Test public void Lt ( ) {
fxt . Test_comp_lt ( 1 , 123 , 2 , true ) ;
fxt . Test_comp_lt ( 1 , 99999999 , 2 , true ) ;
}
@Test public void To_str_fmt ( ) {
fxt . Test_to_str_fmt ( 1 , 2 , "0.0" , "0.5" ) ;
fxt . Test_to_str_fmt ( 1 , 3 , "0.0" , "0.3" ) ;
fxt . Test_to_str_fmt ( 10000 , 7 , "0,000.000" , "1,428.571" ) ;
fxt . Test_to_str_fmt ( 1 , 2 , "00.00" , "00.50" ) ;
}
@Test public void Round ( ) {
fxt . Test_round ( "123.456" , 3 , "123.456" ) ;
fxt . Test_round ( "123.456" , 2 , "123.46" ) ;
fxt . Test_round ( "123.456" , 1 , "123.5" ) ;
fxt . Test_round ( "123.456" , 0 , "123" ) ;
fxt . Test_round ( "123.456" , - 1 , "120" ) ;
fxt . Test_round ( "123.456" , - 2 , "100" ) ;
fxt . Test_round ( "123.456" , - 3 , "0" ) ;
fxt . Test_round ( "6" , - 1 , "10" ) ;
fxt . Test_round ( "5" , - 1 , "10" ) ;
fxt . Test_round ( "6" , - 2 , "0" ) ;
}
}
class Decimal_adp__fxt {
public void Test_divide ( int lhs , int rhs , String expd ) { Tfds . Eq ( expd , Decimal_adp_ . divide_ ( lhs , rhs ) . To_str ( ) ) ; }
public void Test_base_1000 ( int val , String expd ) { Tfds . Eq ( expd , Decimal_adp_ . base1000_ ( val ) . To_str ( ) ) ; }
public void Test_parts ( int num , int fracs , String expd ) { Tfds . Eq ( expd , Decimal_adp_ . parts_ ( num , fracs ) . To_str ( ) ) ; }
public void Test_parse ( String raw , String expd ) { Tfds . Eq ( expd , Decimal_adp_ . parse ( raw ) . To_str ( ) ) ; }
public void Test_truncate_decimal ( String raw , String expd ) { Tfds . Eq ( Decimal_adp_ . parse ( expd ) . To_str ( ) , Decimal_adp_ . parse ( raw ) . Truncate ( ) . To_str ( ) ) ; }
public void Test_frac_1000 ( int lhs , int rhs , int expd ) { Tfds . Eq ( expd , Decimal_adp_ . divide_ ( lhs , rhs ) . Frac_1000 ( ) ) ; }
public void Test_comp_lt ( int lhsNum , int lhsFrc , int rhs , boolean expd ) { Tfds . Eq ( expd , Decimal_adp_ . parts_ ( lhsNum , lhsFrc ) . Comp_lt ( rhs ) ) ; }
public void Test_to_str_fmt ( int l , int r , String fmt , String expd ) { Tfds . Eq ( expd , Decimal_adp_ . divide_ ( l , r ) . To_str ( fmt ) ) ; }
public void Test_round ( String raw , int places , String expd ) { Tfds . Eq_str ( expd , Decimal_adp_ . parse ( raw ) . Round ( places ) . To_str ( ) , "round" ) ; }
}