improve table tests.
This commit is contained in:
@@ -1,11 +1,6 @@
|
|||||||
package org.luaj.vm;
|
package org.luaj.vm;
|
||||||
|
|
||||||
import org.luaj.vm.LDouble;
|
import java.util.Vector;
|
||||||
import org.luaj.vm.LInteger;
|
|
||||||
import org.luaj.vm.LNil;
|
|
||||||
import org.luaj.vm.LString;
|
|
||||||
import org.luaj.vm.LTable;
|
|
||||||
import org.luaj.vm.LValue;
|
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
@@ -18,16 +13,17 @@ public class LTableTest extends TestCase {
|
|||||||
t.put( i, new LString( "Test Value! "+i ) );
|
t.put( i, new LString( "Test Value! "+i ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure all keys are still there.
|
||||||
|
for ( int i = 1; i <= 32; ++i ) {
|
||||||
|
assertEquals( "Test Value! " + i, t.get( i ).toJavaString() );
|
||||||
|
}
|
||||||
|
|
||||||
// Ensure capacities make sense
|
// Ensure capacities make sense
|
||||||
assertEquals( 0, t.getHashCapacity() );
|
assertEquals( 0, t.getHashCapacity() );
|
||||||
|
|
||||||
assertTrue( t.getArrayCapacity() >= 32 );
|
assertTrue( t.getArrayCapacity() >= 32 );
|
||||||
assertTrue( t.getArrayCapacity() <= 64 );
|
assertTrue( t.getArrayCapacity() <= 64 );
|
||||||
|
|
||||||
// Ensure all keys are still there.
|
|
||||||
for ( int i = 1; i <= 32; ++i ) {
|
|
||||||
assertEquals( "Test Value! " + i, t.get( i ).luaAsString().toJavaString() );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testResize() {
|
public void testResize() {
|
||||||
@@ -45,8 +41,8 @@ public class LTableTest extends TestCase {
|
|||||||
assertEquals(LInteger.valueOf(i), t.get(i));
|
assertEquals(LInteger.valueOf(i), t.get(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
assertEquals( 0, t.getHashCapacity() );
|
assertTrue( t.getArrayCapacity() >= 0 && t.getArrayCapacity() <= 2 );
|
||||||
assertTrue( t.getArrayCapacity() >= 6 );
|
assertTrue( t.getHashCapacity() >= 4 );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testOutOfOrderIntegerKeyInsertion() {
|
public void testOutOfOrderIntegerKeyInsertion() {
|
||||||
@@ -56,16 +52,18 @@ public class LTableTest extends TestCase {
|
|||||||
t.put( i, new LString( "Test Value! "+i ) );
|
t.put( i, new LString( "Test Value! "+i ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure capacities make sense
|
|
||||||
assertEquals( 0, t.getHashCapacity() );
|
|
||||||
|
|
||||||
assertTrue( t.getArrayCapacity() >= 32 );
|
|
||||||
assertTrue( t.getArrayCapacity() <= 64 );
|
|
||||||
|
|
||||||
// Ensure all keys are still there.
|
// Ensure all keys are still there.
|
||||||
for ( int i = 1; i <= 32; ++i ) {
|
for ( int i = 1; i <= 32; ++i ) {
|
||||||
assertEquals( "Test Value! " + i, t.get( i ).luaAsString() );
|
assertEquals( "Test Value! "+i, t.get( i ).toJavaString() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure capacities make sense
|
||||||
|
assertTrue( t.getArrayCapacity() >= 0 );
|
||||||
|
assertTrue( t.getArrayCapacity() <= 6 );
|
||||||
|
|
||||||
|
assertTrue( t.getHashCapacity() >= 16 );
|
||||||
|
assertTrue( t.getHashCapacity() <= 64 );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testStringAndIntegerKeys() {
|
public void testStringAndIntegerKeys() {
|
||||||
@@ -177,4 +175,136 @@ public class LTableTest extends TestCase {
|
|||||||
assertEquals( 0, t.size() );
|
assertEquals( 0, t.size() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testInOrderLuaLength() {
|
||||||
|
LTable t = new LTable();
|
||||||
|
|
||||||
|
for ( int i = 1; i <= 32; ++i ) {
|
||||||
|
t.put( i, new LString( "Test Value! "+i ) );
|
||||||
|
assertEquals( i, t.luaLength() );
|
||||||
|
assertEquals( i, t.luaMaxN().toJavaInt() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testOutOfOrderLuaLength() {
|
||||||
|
LTable t = new LTable();
|
||||||
|
|
||||||
|
for ( int j=8; j<32; j+=8 ) {
|
||||||
|
for ( int i = j; i > 0; --i ) {
|
||||||
|
t.put( i, new LString( "Test Value! "+i ) );
|
||||||
|
}
|
||||||
|
assertEquals( j, t.luaLength() );
|
||||||
|
assertEquals( j, t.luaMaxN().toJavaInt() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testStringKeysLuaLength() {
|
||||||
|
LTable t = new LTable();
|
||||||
|
|
||||||
|
for ( int i = 1; i <= 32; ++i ) {
|
||||||
|
t.put( "str-"+i, new LString( "String Key Test Value! "+i ) );
|
||||||
|
assertEquals( 0, t.luaLength() );
|
||||||
|
assertEquals( 0, t.luaMaxN().toJavaInt() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testMixedKeysLuaLength() {
|
||||||
|
LTable t = new LTable();
|
||||||
|
|
||||||
|
for ( int i = 1; i <= 32; ++i ) {
|
||||||
|
t.put( "str-"+i, new LString( "String Key Test Value! "+i ) );
|
||||||
|
t.put( i, new LString( "Int Key Test Value! "+i ) );
|
||||||
|
assertEquals( i, t.luaLength() );
|
||||||
|
assertEquals( i, t.luaMaxN().toJavaInt() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final void compareLists(LTable t,Vector v) {
|
||||||
|
int n = v.size();
|
||||||
|
assertEquals(v.size(),t.luaLength());
|
||||||
|
for ( int j=0; j<n; j++ ) {
|
||||||
|
Object vj = v.elementAt(j);
|
||||||
|
Object tj = t.get(j+1).toJavaString();
|
||||||
|
assertEquals(vj,tj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testInsertBeginningOfList() {
|
||||||
|
LTable t = new LTable();
|
||||||
|
Vector v = new Vector();
|
||||||
|
|
||||||
|
for ( int i = 1; i <= 32; ++i ) {
|
||||||
|
String test = "Test Value! "+i;
|
||||||
|
t.luaInsertPos(1, LString.valueOf(test));
|
||||||
|
v.insertElementAt(test, 0);
|
||||||
|
compareLists(t,v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testInsertEndOfList() {
|
||||||
|
LTable t = new LTable();
|
||||||
|
Vector v = new Vector();
|
||||||
|
|
||||||
|
for ( int i = 1; i <= 32; ++i ) {
|
||||||
|
String test = "Test Value! "+i;
|
||||||
|
t.luaInsertPos(0, LString.valueOf(test));
|
||||||
|
v.insertElementAt(test, v.size());
|
||||||
|
compareLists(t,v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testInsertMiddleOfList() {
|
||||||
|
LTable t = new LTable();
|
||||||
|
Vector v = new Vector();
|
||||||
|
|
||||||
|
for ( int i = 1; i <= 32; ++i ) {
|
||||||
|
String test = "Test Value! "+i;
|
||||||
|
int m = i / 2;
|
||||||
|
t.luaInsertPos(m+1, LString.valueOf(test));
|
||||||
|
v.insertElementAt(test, m);
|
||||||
|
compareLists(t,v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final void prefillLists(LTable t,Vector v) {
|
||||||
|
for ( int i = 1; i <= 32; ++i ) {
|
||||||
|
String test = "Test Value! "+i;
|
||||||
|
t.luaInsertPos(0, LString.valueOf(test));
|
||||||
|
v.insertElementAt(test, v.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRemoveBeginningOfList() {
|
||||||
|
LTable t = new LTable();
|
||||||
|
Vector v = new Vector();
|
||||||
|
prefillLists(t,v);
|
||||||
|
for ( int i = 1; i <= 32; ++i ) {
|
||||||
|
t.luaRemovePos(1);
|
||||||
|
v.removeElementAt(0);
|
||||||
|
compareLists(t,v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRemoveEndOfList() {
|
||||||
|
LTable t = new LTable();
|
||||||
|
Vector v = new Vector();
|
||||||
|
prefillLists(t,v);
|
||||||
|
for ( int i = 1; i <= 32; ++i ) {
|
||||||
|
t.luaRemovePos(0);
|
||||||
|
v.removeElementAt(v.size()-1);
|
||||||
|
compareLists(t,v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRemoveMiddleOfList() {
|
||||||
|
LTable t = new LTable();
|
||||||
|
Vector v = new Vector();
|
||||||
|
prefillLists(t,v);
|
||||||
|
for ( int i = 1; i <= 32; ++i ) {
|
||||||
|
int m = v.size() / 2;
|
||||||
|
t.luaRemovePos(m+1);
|
||||||
|
v.removeElementAt(m);
|
||||||
|
compareLists(t,v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user