package org.yamcs.parameterarchive;
import static org.junit.Assert.*;
import java.io.File;
import org.junit.Test;
import org.rocksdb.ColumnFamilyHandle;
import org.rocksdb.RocksDB;
import org.yamcs.utils.FileUtils;
import org.yamcs.utils.IntArray;
public class ParameterGroupIdMapTest {
@Test
public void test1() throws Exception {
File f = new File("/tmp/TestParameterIdMap_test1");
FileUtils.deleteRecursively(f.toPath());
RocksDB db = RocksDB.open(f.getAbsolutePath());
ColumnFamilyHandle cfh = db.getDefaultColumnFamily();
ParameterGroupIdDb pgidMap = new ParameterGroupIdDb(db, cfh);
int[] p1 = new int[] {1,3,4};
int[] p2 = new int[] {1,3,4};
int[] p3 = new int[] {1,4,5};
int pg1 = pgidMap.createAndGet(p1);
int pg3 = pgidMap.createAndGet(p3);
int pg2 = pgidMap.createAndGet(p2);
int[] ia = pgidMap.getAllGroups(1);
assertArrayEquals(ia, new int[] {pg1, pg3});
assertEquals(pg1, pg2);
assertTrue(pg3 > pg1);
db.close();
db = RocksDB.open(f.getAbsolutePath());
cfh = db.getDefaultColumnFamily();
pgidMap = new ParameterGroupIdDb(db, cfh);
int pg4 = pgidMap.createAndGet(p1);
assertEquals(pg1, pg4);
int[] p4 = new int[] {1,4,7};
int pg6 = pgidMap.createAndGet(p4);
assertTrue(pg6 > pg3);
int[] ia1 = pgidMap.getAllGroups(1);
assertArrayEquals(new int[] {pg1, pg3, pg6}, ia1);
}
void checkEquals(IntArray result, int...expected) {
assertEquals(expected.length, result.size());
for(int i=0;i<expected.length;i++) {
assertEquals(expected[i], result.get(i));
}
}
}