@Test
  public void testFieldCacheRangeFilterFloats() throws IOException {

    IndexReader reader = signedIndexReader;
    IndexSearcher search = newSearcher(reader);

    int numDocs = reader.numDocs();
    Float minIdO = Float.valueOf(minId + .5f);
    Float medIdO = Float.valueOf(minIdO.floatValue() + ((maxId - minId)) / 2.0f);

    ScoreDoc[] result;
    Query q = new TermQuery(new Term("body", "body"));

    result =
        search.search(
                q, FieldCacheRangeFilter.newFloatRange("id_float", minIdO, medIdO, T, T), numDocs)
            .scoreDocs;
    assertEquals("find all", numDocs / 2, result.length);
    int count = 0;
    result =
        search.search(
                q, FieldCacheRangeFilter.newFloatRange("id_float", null, medIdO, F, T), numDocs)
            .scoreDocs;
    count += result.length;
    result =
        search.search(
                q, FieldCacheRangeFilter.newFloatRange("id_float", medIdO, null, F, F), numDocs)
            .scoreDocs;
    count += result.length;
    assertEquals("sum of two concenatted ranges", numDocs, count);
    result =
        search.search(q, FieldCacheRangeFilter.newFloatRange("id_float", null, null, T, T), numDocs)
            .scoreDocs;
    assertEquals("find all", numDocs, result.length);
    result =
        search.search(
                q,
                FieldCacheRangeFilter.newFloatRange(
                    "id_float", Float.valueOf(Float.POSITIVE_INFINITY), null, F, F),
                numDocs)
            .scoreDocs;
    assertEquals("infinity special case", 0, result.length);
    result =
        search.search(
                q,
                FieldCacheRangeFilter.newFloatRange(
                    "id_float", null, Float.valueOf(Float.NEGATIVE_INFINITY), F, F),
                numDocs)
            .scoreDocs;
    assertEquals("infinity special case", 0, result.length);
  }