diff options
| -rw-r--r-- | src/options.cpp | 2 | ||||
| -rw-r--r-- | src/packedintarray.cpp | 7 | ||||
| -rw-r--r-- | src/unitnumber.cpp | 14 | ||||
| -rw-r--r-- | src/unitnumber.h | 1 |
4 files changed, 18 insertions, 6 deletions
diff --git a/src/options.cpp b/src/options.cpp index 89397f4..4fcf1e2 100644 --- a/src/options.cpp +++ b/src/options.cpp | |||
| @@ -17,7 +17,7 @@ Options::~Options() | |||
| 17 | { | 17 | { |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | int Options::selfTest( Bu::StringArray aArgs ) | 20 | int Options::selfTest( Bu::StringArray ) |
| 21 | { | 21 | { |
| 22 | UnitNumber().run(); | 22 | UnitNumber().run(); |
| 23 | 23 | ||
diff --git a/src/packedintarray.cpp b/src/packedintarray.cpp index b91358e..824f589 100644 --- a/src/packedintarray.cpp +++ b/src/packedintarray.cpp | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | #define bitsizeof( x ) ((sizeof(x))*8) | 5 | #define bitsizeof( x ) ((sizeof(x))*8) |
| 6 | #define StoreBits ((bitsizeof(PackedIntArray::Store))) | 6 | #define StoreBits ((bitsizeof(PackedIntArray::Store))) |
| 7 | #define StoreCount( x ) (((x*iBitWidth)/StoreBits)+(((x*iBitWidth)%StoreBits)?1:0)) | 7 | #define StoreCount( x ) ((((x)*iBitWidth)/StoreBits)+((((x)*iBitWidth)%StoreBits)?1:0)) |
| 8 | 8 | ||
| 9 | PackedIntArray::PackedIntArray( PackedIntArray::Unit iBitWidth ) : | 9 | PackedIntArray::PackedIntArray( PackedIntArray::Unit iBitWidth ) : |
| 10 | iBitWidth( iBitWidth ), | 10 | iBitWidth( iBitWidth ), |
| @@ -207,10 +207,11 @@ void PackedIntArray::checkCapacity() | |||
| 207 | { | 207 | { |
| 208 | // Bu::println("!!! Resizing !!!"); | 208 | // Bu::println("!!! Resizing !!!"); |
| 209 | Store *aOldData = aData; | 209 | Store *aOldData = aData; |
| 210 | int iSize = StoreCount(iCapacity); | ||
| 210 | int iNewSize = (iCapacity==0)?(bitsizeof(Store)/iBitWidth):(iCapacity=StoreCount(iCapacity*2)); | 211 | int iNewSize = (iCapacity==0)?(bitsizeof(Store)/iBitWidth):(iCapacity=StoreCount(iCapacity*2)); |
| 211 | while( iNewSize < iCount ) | 212 | int iCountSize = StoreCount(iCount); |
| 213 | while( iNewSize < iCountSize ) | ||
| 212 | iNewSize *= 2; | 214 | iNewSize *= 2; |
| 213 | int iSize = StoreCount(iCapacity); | ||
| 214 | // Bu::println(" %1 => %2 (%3 bit words)").arg( iSize ).arg( iNewSize ) | 215 | // Bu::println(" %1 => %2 (%3 bit words)").arg( iSize ).arg( iNewSize ) |
| 215 | // .arg( StoreBits ); | 216 | // .arg( StoreBits ); |
| 216 | aData = new Store[iNewSize]; | 217 | aData = new Store[iNewSize]; |
diff --git a/src/unitnumber.cpp b/src/unitnumber.cpp index d4bc7a8..79797c9 100644 --- a/src/unitnumber.cpp +++ b/src/unitnumber.cpp | |||
| @@ -5,6 +5,8 @@ | |||
| 5 | UnitNumber::UnitNumber() | 5 | UnitNumber::UnitNumber() |
| 6 | { | 6 | { |
| 7 | setName("Number"); | 7 | setName("Number"); |
| 8 | add( static_cast<Bu::UnitSuite::Test>(&UnitNumber::parse1), | ||
| 9 | "parse1", Bu::UnitSuite::expectPass ); | ||
| 8 | add( static_cast<Bu::UnitSuite::Test>(&UnitNumber::multiply1), | 10 | add( static_cast<Bu::UnitSuite::Test>(&UnitNumber::multiply1), |
| 9 | "multiply1", Bu::UnitSuite::expectPass ); | 11 | "multiply1", Bu::UnitSuite::expectPass ); |
| 10 | } | 12 | } |
| @@ -13,10 +15,18 @@ UnitNumber::~UnitNumber() | |||
| 13 | { | 15 | { |
| 14 | } | 16 | } |
| 15 | 17 | ||
| 18 | void UnitNumber::parse1() | ||
| 19 | { | ||
| 20 | unitTest( Number("121932631356500531347203169112635269").toString() == | ||
| 21 | "121932631356500531347203169112635269" ); | ||
| 22 | } | ||
| 23 | |||
| 16 | void UnitNumber::multiply1() | 24 | void UnitNumber::multiply1() |
| 17 | { | 25 | { |
| 26 | unitTest(Number("123456789") * Number("987654321") == "121932631112635269"); | ||
| 18 | unitTest( | 27 | unitTest( |
| 19 | (Number("123456789123456789") * Number("987654321987654321")).toString() | 28 | Number("123456789123456789") * Number("987654321987654321") == |
| 20 | == "121932631356500531347203169112635269" ); | 29 | "121932631356500531347203169112635269" |
| 30 | ); | ||
| 21 | } | 31 | } |
| 22 | 32 | ||
diff --git a/src/unitnumber.h b/src/unitnumber.h index 89b1c0f..76496b9 100644 --- a/src/unitnumber.h +++ b/src/unitnumber.h | |||
| @@ -9,6 +9,7 @@ public: | |||
| 9 | UnitNumber(); | 9 | UnitNumber(); |
| 10 | virtual ~UnitNumber(); | 10 | virtual ~UnitNumber(); |
| 11 | 11 | ||
| 12 | void parse1(); | ||
| 12 | void multiply1(); | 13 | void multiply1(); |
| 13 | }; | 14 | }; |
| 14 | 15 | ||
