diff options
Diffstat (limited to 'src/unit/hash.unit')
| -rw-r--r-- | src/unit/hash.unit | 113 | 
1 files changed, 57 insertions, 56 deletions
| diff --git a/src/unit/hash.unit b/src/unit/hash.unit index c0a10e3..e3d7e42 100644 --- a/src/unit/hash.unit +++ b/src/unit/hash.unit | |||
| @@ -15,72 +15,73 @@ typedef Bu::Hash<Bu::FString, int> StrIntHash; | |||
| 15 | typedef Bu::Hash<Bu::FString, Bu::FString> StrStrHash; | 15 | typedef Bu::Hash<Bu::FString, Bu::FString> StrStrHash; | 
| 16 | typedef Bu::Hash<int, Bu::FString> IntStrHash; | 16 | typedef Bu::Hash<int, Bu::FString> IntStrHash; | 
| 17 | 17 | ||
| 18 | {=Init} | 18 | suite Hash | 
| 19 | |||
| 20 | {%probe1} | ||
| 21 | { | 19 | { | 
| 22 | StrIntHash h; | 20 | test probe1 | 
| 23 | char buf[20]; | ||
| 24 | for(int i=1;i<10000;i++) | ||
| 25 | { | 21 | { | 
| 26 | sprintf(buf,"%d",i); | 22 | StrIntHash h; | 
| 27 | Bu::FString sTmp(buf); | 23 | char buf[20]; | 
| 28 | h[sTmp] = i; | 24 | for(int i=1;i<10000;i++) | 
| 29 | unitTest( h.has(sTmp) ); | 25 | { | 
| 26 | sprintf(buf,"%d",i); | ||
| 27 | Bu::FString sTmp(buf); | ||
| 28 | h[sTmp] = i; | ||
| 29 | unitTest( h.has(sTmp) ); | ||
| 30 | } | ||
| 30 | } | 31 | } | 
| 31 | } | ||
| 32 | |||
| 33 | {%insert1} | ||
| 34 | { | ||
| 35 | StrIntHash h; | ||
| 36 | h["Hi"] = 42; | ||
| 37 | unitTest( h["Hi"] == 42 ); | ||
| 38 | } | ||
| 39 | 32 | ||
| 40 | {%insert2} | 33 | test insert1 | 
| 41 | { | 34 | { | 
| 42 | StrStrHash h; | 35 | StrIntHash h; | 
| 43 | h["Hi"] = "Yo"; | 36 | h["Hi"] = 42; | 
| 44 | h["Bye"] = "Later"; | 37 | unitTest( h["Hi"] == 42 ); | 
| 45 | unitTest( h["Hi"].getValue() == "Yo" ); | 38 | } | 
| 46 | 39 | ||
| 47 | StrStrHash h2(h); | 40 | test insert2 | 
| 48 | unitTest( h2["Hi"].getValue() == "Yo" ); | 41 | { | 
| 49 | unitTest( h2["Bye"].getValue() == "Later" ); | 42 | StrStrHash h; | 
| 43 | h["Hi"] = "Yo"; | ||
| 44 | h["Bye"] = "Later"; | ||
| 45 | unitTest( h["Hi"].getValue() == "Yo" ); | ||
| 50 | 46 | ||
| 51 | StrStrHash h3; | 47 | StrStrHash h2(h); | 
| 52 | h3 = h; | 48 | unitTest( h2["Hi"].getValue() == "Yo" ); | 
| 53 | unitTest( h3["Hi"].getValue() == "Yo" ); | 49 | unitTest( h2["Bye"].getValue() == "Later" ); | 
| 54 | unitTest( h3["Bye"].getValue() == "Later" ); | ||
| 55 | } | ||
| 56 | 50 | ||
| 57 | {%insert3} | 51 | StrStrHash h3; | 
| 58 | { | 52 | h3 = h; | 
| 59 | IntStrHash h; | 53 | unitTest( h3["Hi"].getValue() == "Yo" ); | 
| 54 | unitTest( h3["Bye"].getValue() == "Later" ); | ||
| 55 | } | ||
| 60 | 56 | ||
| 61 | for( unsigned int i=1; i<50; i++ ) | 57 | test insert3 | 
| 62 | { | 58 | { | 
| 63 | h[i] = "testing"; | 59 | IntStrHash h; | 
| 64 | unitTest( h.getSize() == i ); | ||
| 65 | } | ||
| 66 | } | ||
| 67 | 60 | ||
| 68 | {%erase1} | 61 | for( unsigned int i=1; i<50; i++ ) | 
| 69 | { | 62 | { | 
| 70 | StrIntHash h; | 63 | h[i] = "testing"; | 
| 71 | h.insert("Number 1", 1 ); | 64 | unitTest( h.getSize() == i ); | 
| 72 | h.insert("Number 2", 2 ); | 65 | } | 
| 73 | h.insert("Number 3", 3 ); | 66 | } | 
| 74 | h.erase("Number 2"); | ||
| 75 | h.get("Number 3"); | ||
| 76 | try { | ||
| 77 | h.get("Number 2"); | ||
| 78 | unitFailed("h.get(\"Number 2\") should have thrown an exception."); | ||
| 79 | } catch( Bu::HashException &e ) { } | ||
| 80 | 67 | ||
| 81 | /* printf("\n"); | 68 | test erase1 | 
| 82 | for( StrIntHash::iterator i = h.begin(); i != h.end(); i++ ) | ||
| 83 | { | 69 | { | 
| 84 | printf(" - \"%s\" = %d\n", i.getKey().getStr(), i.getValue() ); | 70 | StrIntHash h; | 
| 85 | } */ | 71 | h.insert("Number 1", 1 ); | 
| 72 | h.insert("Number 2", 2 ); | ||
| 73 | h.insert("Number 3", 3 ); | ||
| 74 | h.erase("Number 2"); | ||
| 75 | h.get("Number 3"); | ||
| 76 | try { | ||
| 77 | h.get("Number 2"); | ||
| 78 | unitFailed("h.get(\"Number 2\") should have thrown an exception."); | ||
| 79 | } catch( Bu::HashException &e ) { } | ||
| 80 | |||
| 81 | /* printf("\n"); | ||
| 82 | for( StrIntHash::iterator i = h.begin(); i != h.end(); i++ ) | ||
| 83 | { | ||
| 84 | printf(" - \"%s\" = %d\n", i.getKey().getStr(), i.getValue() ); | ||
| 85 | } */ | ||
| 86 | } | ||
| 86 | } | 87 | } | 
