program dc_hash_test use dc_types, only: STRING use dc_test, only: AssertEqual use dc_string, only: StoA use dc_hash, only: HASH, Put, PutLine, Get, Number, Delete use dc_trace, only: SetDebug implicit none type(HASH) :: hashv character(STRING) :: value logical :: found continue call SetDebug call Put(hashv, 'hoge', 'hero') call Put(hashv, 'key', 'value') call Put(hashv, 'hoge ', 'foo') call Put(hashv, 'local', 'demo') call Get(hashv, 'hoge', value) call AssertEqual('Put, Get test 1', 'foo', value) call Get(hashv, 'not+found', value, found) call AssertEqual('Put, Get test 2', '', value) call AssertEqual('Put, Get test 3', .false., found) call Get(hashv, 'local', value, found) call AssertEqual('Put, Get test 4', 'demo', value) call AssertEqual('Put, Get test 5', .true., found) call AssertEqual('Number test', 3, number(hashv)) call Delete(hashv, 'hogehoge') call AssertEqual('Delete test 1', 3, number(hashv)) call Delete(hashv, 'hoge') call AssertEqual('Delete test 2', 2, number(hashv)) call Delete(hashv, 'key') call AssertEqual('Delete test 3', 1, number(hashv)) call Delete(hashv, 'local') call AssertEqual('Delete test 4', 0, number(hashv)) call Put(hashv, 'new', 'val1') ! call PutLine(hashv) call Delete(hashv) end program dc_hash_test