コード例 #1
1
ファイル: BTreeMapTest.java プロジェクト: hangum/mapdb
  @Test
  public void submapToString() {

    for (int i = 0; i < 20; i++) {
      m.put(i, "aa" + i);
    }

    Map submap = m.subMap(10, true, 13, true);
    assertEquals("{10=aa10, 11=aa11, 12=aa12, 13=aa13}", submap.toString());
  }
コード例 #2
0
ファイル: BTreeMapTest.java プロジェクト: hangum/mapdb
  @Test
  public void mod_listener_lock() {
    DB db = DBMaker.memoryDB().transactionDisable().make();
    final BTreeMap m = db.treeMap("name");

    final long rootRecid = db.getEngine().get(m.rootRecidRef, Serializer.RECID);
    final AtomicInteger counter = new AtomicInteger();

    m.modificationListenerAdd(
        new Bind.MapListener() {
          @Override
          public void update(Object key, Object oldVal, Object newVal) {
            assertTrue(m.nodeLocks.get(rootRecid) == Thread.currentThread());
            assertEquals(1, m.nodeLocks.size());
            counter.incrementAndGet();
          }
        });

    m.put("aa", "aa");
    m.put("aa", "bb");
    m.remove("aa");

    m.put("aa", "aa");
    m.remove("aa", "aa");
    m.putIfAbsent("aa", "bb");
    m.replace("aa", "bb", "cc");
    m.replace("aa", "cc");

    assertEquals(8, counter.get());
  }
コード例 #3
0
ファイル: BTreeMapTest.java プロジェクト: hangum/mapdb
  @Test
  public void floorTestFill() {

    m.put(1, "val1");
    m.put(2, "val2");
    m.put(5, "val3");

    assertEquals(5, m.floorKey(5));
    assertEquals(1, m.floorKey(1));
    assertEquals(2, m.floorKey(2));
    assertEquals(2, m.floorKey(3));
    assertEquals(2, m.floorKey(4));
    assertEquals(5, m.floorKey(5));
    assertEquals(5, m.floorKey(6));
  }
コード例 #4
0
ファイル: BTreeMapTest.java プロジェクト: hangum/mapdb
  @Test
  public void concurrent_first_key() {
    DB db = DBMaker.memoryDB().transactionDisable().make();
    final BTreeMap m = db.treeMap("name");

    // fill
    final int c = 1000000 * TT.scale();
    for (int i = 0; i <= c; i++) {
      m.put(i, i);
    }

    Thread t =
        new Thread() {
          @Override
          public void run() {
            for (int i = 0; i <= c; i++) {
              m.remove(c);
            }
          }
        };
    t.run();
    while (t.isAlive()) {
      assertNotNull(m.firstKey());
    }
  }
コード例 #5
0
ファイル: BTreeMapTest.java プロジェクト: hangum/mapdb
  @Test
  public void test_size() {

    assertTrue(m.isEmpty());
    assertEquals(0, m.size());
    for (int i = 1; i < 30; i++) {
      m.put(i, i);
      assertEquals(i, m.size());
      assertFalse(m.isEmpty());
    }
  }
コード例 #6
0
ファイル: BTreeMapTest.java プロジェクト: hangum/mapdb
  @Test
  public void batch_insert() {

    for (int i = 0; i < 1000; i++) {
      m.put(i * 10, i * 10 + 1);
    }

    for (int i = 0; i < 10000; i++) {
      assertEquals(i % 10 == 0 ? i + 1 : null, m.get(i));
    }
  }
コード例 #7
0
ファイル: BTreeMapTest.java プロジェクト: hangum/mapdb
  @Test
  public void root_leaf_insert() {
    if (valsOutside) return;

    m.put(11, 12);
    final long rootRecid = engine.get(m.rootRecidRef, Serializer.RECID);
    BTreeMap.LeafNode n = (BTreeMap.LeafNode) engine.get(rootRecid, m.nodeSerializer);
    assertTrue(Arrays.equals(new Object[] {null, 11, null}, nodeKeysToArray(n)));
    assertTrue(Arrays.equals(new Object[] {12}, (Object[]) n.vals));
    assertEquals(0, n.next);
  }
コード例 #8
0
ファイル: BTreeMapTest.java プロジェクト: hangum/mapdb
  @Test
  public void test_key_iterator() {

    for (int i = 0; i < 20; i++) {
      m.put(i, i * 10);
    }

    Iterator iter = m.keySet().iterator();

    for (int i = 0; i < 20; i++) {
      assertTrue(iter.hasNext());
      assertEquals(i, iter.next());
    }
    assertFalse(iter.hasNext());
  }
コード例 #9
0
ファイル: BTreeMapTest.java プロジェクト: hangum/mapdb
  @Test
  public void delete() {

    for (int i :
        new int[] {
          10, 50, 20, 42,
          // 44, 68, 20, 93, 85, 71, 62, 77, 4, 37, 66
        }) {
      m.put(i, i);
    }
    assertEquals(10, m.remove(10));
    assertEquals(20, m.remove(20));
    assertEquals(42, m.remove(42));

    assertEquals(null, m.remove(42999));
  }
コード例 #10
0
ファイル: BTreeMapTest.java プロジェクト: hangum/mapdb
  @Test
  public void randomStructuralCheck() {
    Random r = new Random();
    BTreeMap map =
        DBMaker.memoryDB()
            .transactionDisable()
            .make()
            .treeMapCreate("aa")
            .keySerializer(BTreeKeySerializer.INTEGER)
            .valueSerializer(Serializer.INTEGER)
            .make();

    int max = 100000 * TT.scale();

    for (int i = 0; i < max * 10; i++) {
      map.put(r.nextInt(max), r.nextInt());
    }

    map.checkStructure();
  }
コード例 #11
0
ファイル: BTreeMapTest.java プロジェクト: hangum/mapdb
  @Test
  public void findSmaller() {

    for (int i = 0; i < 10000; i += 3) {
      m.put(i, "aa" + i);
    }

    for (int i = 0; i < 10000; i += 1) {
      Integer s = i - i % 3;
      Map.Entry e = m.findSmaller(i, true);
      assertEquals(s, e != null ? e.getKey() : null);
    }

    assertEquals(9999, m.findSmaller(100000, true).getKey());

    assertNull(m.findSmaller(0, false));
    for (int i = 1; i < 10000; i += 1) {
      Integer s = i - i % 3;
      if (s == i) s -= 3;
      Map.Entry e = m.findSmaller(i, false);
      assertEquals(s, e != null ? e.getKey() : null);
    }
    assertEquals(9999, m.findSmaller(100000, false).getKey());
  }