@Test
  public void test1_KeyValueCondition() throws Exception {
    System.out.println("test1_KeyValueCondition");

    manager.getContext().validKeys.clear();
    manager.getContext().validKeys.add("browser");

    db.open();

    AdDefinition b = new ImageAdDefinition();
    b.setId("1");
    KeyValueConditionDefinition sdef = new KeyValueConditionDefinition();
    sdef.getKeyValues().add(new KeyValue("browser", "firefox"));
    sdef.getKeyValues().add(new KeyValue("browser", "chrome"));
    b.addConditionDefinition(ConditionDefinitions.KEYVALUE, sdef);
    b.setFormat(new FullBannerAdFormat());
    db.addBanner(b);

    b = new ImageAdDefinition();
    b.setId("2");
    sdef = new KeyValueConditionDefinition();
    sdef.getKeyValues().add(new KeyValue("browser", "firefox"));
    sdef.getKeyValues().add(new KeyValue("browser", "ie"));
    b.addConditionDefinition(ConditionDefinitions.KEYVALUE, sdef);
    b.setFormat(new FullBannerAdFormat());
    db.addBanner(b);

    db.reopen();

    AdRequest request = new AdRequest();
    List<AdFormat> formats = new ArrayList<AdFormat>();
    formats.add(new FullBannerAdFormat());
    request.formats(formats);
    List<AdType> types = new ArrayList<AdType>();
    types.add(AdTypes.forType(ImageAdType.TYPE));
    request.types(types);
    request.keyValues().put("browser", "opera");

    List<AdDefinition> result = db.search(request);
    assertTrue(result.isEmpty());

    request.keyValues().clear();
    request.keyValues().put("browser", "firefox");
    result = db.search(request);
    assertEquals(2, result.size());

    request.keyValues().clear();
    request.keyValues().put("browser", "chrome");

    result = db.search(request);
    assertEquals(1, result.size());
    assertTrue(result.get(0).getId().equals("1"));

    request.keyValues().clear();
    request.keyValues().put("browser", "ie");

    result = db.search(request);
    assertEquals(1, result.size());
    assertTrue(result.get(0).getId().equals("2"));
  }