package org.thrudb.thrudoc.tokyocabinet; import java.util.List; import junit.framework.TestCase; public class TokyoCabinetTests extends TestCase { TokyoCabinetDB tdb; @Override public void setUp() { try{ tdb = new TokyoCabinetDB("","unittest"); tdb.erase(); }catch(Throwable t){ t.printStackTrace(); fail(t.getMessage()); } } @Override public void tearDown(){ } /** * */ public void testCRUD(){ try{ //Create for(int i=0; i<100; i++){ tdb.put("key"+Integer.toString(i), ("value"+Integer.toString(i)).getBytes()); } //Retrieve for(int i=0; i<100; i++){ String val = new String(tdb.get("key"+Integer.toString(i))); assertEquals("value"+Integer.toString(i), val); } //Update for(int i=0; i<100; i++){ tdb.put("key"+Integer.toString(i), ("updated value"+Integer.toString(i)).getBytes()); } //re-Retrieve for(int i=0; i<100; i++){ String val = new String(tdb.get("key"+Integer.toString(i))); assertEquals("updated value"+Integer.toString(i), val); } //Delete for(int i=0; i<100; i++){ tdb.remove("key"+Integer.toString(i)); } //re-Retrieve for(int i=0; i<100; i++){ if(tdb.get("key"+Integer.toString(i)) != null) fail("key still exists after removed"); } }catch(Throwable t){ t.printStackTrace(); fail(t.getLocalizedMessage()); } } public void testIncr() { int val = 0; for(int i=0; i<100; i++) val = tdb.incr("key", 1); assertEquals(100,val); for(int i=0; i<100; i++) val = tdb.decr("key", 1); assertEquals(0,val); } public void testPushPopBack(){ try{ tdb.push_back("a", ("val").getBytes()); tdb.push_back("z", ("val").getBytes()); for(int i=0; i<100; i++) tdb.push_back("key", ("value"+Integer.toString(i)).getBytes()); assertEquals(100,tdb.length("key")); for(int i=99; i>=0; i--) assertEquals("value"+Integer.toString(i),new String(tdb.pop_back("key"))); assertEquals(0,tdb.length("key")); }catch(Throwable t){ t.printStackTrace(); fail(t.getLocalizedMessage()); } } public void testPushPopFront(){ try{ tdb.push_back("a", ("val").getBytes()); tdb.push_back("z", ("val").getBytes()); for(int i=0; i<100; i++) tdb.push_front("key", ("value"+Integer.toString(i)).getBytes()); assertEquals(100,tdb.length("key")); for(int i=99; i>=0; i--) assertEquals("value"+Integer.toString(i),new String(tdb.pop_front("key"))); assertEquals(0,tdb.length("key")); }catch(Throwable t){ t.printStackTrace(); fail(t.getLocalizedMessage()); } } public void testListCRUD(){ try{ for(int i=0; i<100; i++) tdb.push_back("key", ("value"+String.valueOf(i)).getBytes()); assertEquals(100,tdb.length("key")); tdb.insert_at("key", ("funk").getBytes(), 77); assertEquals(101,tdb.length("key")); assertEquals("funk", new String(tdb.retrieve_at("key", 77))); tdb.replace_at("key", ("soul").getBytes(), 77); assertEquals("soul", new String(tdb.retrieve_at("key", 77))); assertEquals("soul", new String(tdb.remove_at("key", 77))); assertEquals(100, tdb.length("key")); List<byte[]> res = tdb.range("key", 90, 10000); assertEquals(10,res.size()); for(int i=0; i<10; i++){ assertEquals("value"+String.valueOf(i+90), new String(res.get(i))); } }catch(Throwable t){ t.printStackTrace(); fail(t.getLocalizedMessage()); } } }