@Test
  protected void upperLowerCase() {
    repository.insert(generator.get().withId("id1").withValue(""));
    repository.insert(generator.get().withId("id2").withValue("a"));
    repository.insert(generator.get().withId("id3").withValue("A"));
    repository.insert(generator.get().withId("id4").withValue("bC"));

    // empty
    ids(string.value.toLowerCase().isEmpty()).isOf("id1");
    ids(string.value.toUpperCase().isEmpty()).isOf("id1");
    ids(string.value.toLowerCase().notEmpty()).not().isOf("id1");
    ids(string.value.toUpperCase().notEmpty()).not().isOf("id1");

    // single letter
    ids(string.value.toLowerCase().is("a")).hasContentInAnyOrder("id2", "id3");
    ids(string.value.toUpperCase().is("A")).hasContentInAnyOrder("id2", "id3");
    ids(string.value.toUpperCase().is("a")).isEmpty();
    ids(string.value.toLowerCase().is("A")).isEmpty();
    ids(string.value.toLowerCase().isNot("a")).hasContentInAnyOrder("id1", "id4");
    ids(string.value.toUpperCase().isNot("A")).hasContentInAnyOrder("id1", "id4");

    // two letters
    ids(string.value.toUpperCase().is("BC")).isOf("id4");
    ids(string.value.toLowerCase().is("bc")).isOf("id4");
    ids(string.value.toLowerCase().is("BC")).isEmpty();
    ids(string.value.toUpperCase().is("bc")).isEmpty();
    ids(string.value.toUpperCase().is("bC")).isEmpty();
    ids(string.value.toUpperCase().is("Bc")).isEmpty();

    // in / notIn
    ids(string.value.toUpperCase().in("A", "BC")).hasContentInAnyOrder("id2", "id3", "id4");
    ids(string.value.toLowerCase().in("", "a")).hasContentInAnyOrder("id1", "id2", "id3");
    ids(string.value.toUpperCase().notIn("BC", "A")).hasContentInAnyOrder("id1");

    // chain upper/lower
    ids(string.value.toUpperCase().toLowerCase().in("A", "BC")).isEmpty();
    ids(string.value.toLowerCase().toUpperCase().in("A", "BC")).hasContentInAnyOrder("id2", "id3", "id4");
  }
Check upper/lower case functionality. Example {@code .toUpperCase().contains("AA") }
criteria/common/test/org/immutables/criteria/typemodel/StringTemplate.java