public void testSortMissing() throws Exception {
   DoubleValuesSource onefield = DoubleValuesSource.fromDoubleField("onefield");
   TopDocs results =
       searcher.search(new MatchAllDocsQuery(), 1, new Sort(onefield.getSortField(true)));
   FieldDoc first = (FieldDoc) results.scoreDocs[0];
   assertEquals(45.72, first.fields[0]);
 }
  // Take a Sort, and replace any field sorts with Sortables
  Sort convertSortToSortable(Sort sort) {
    SortField original[] = sort.getSort();
    SortField mutated[] = new SortField[original.length];
    for (int i = 0; i < mutated.length; i++) {
      if (random().nextInt(3) > 0) {
        SortField s = original[i];
        boolean reverse = s.getType() == SortField.Type.SCORE || s.getReverse();
        switch (s.getType()) {
          case INT:
            mutated[i] = DoubleValuesSource.fromIntField(s.getField()).getSortField(reverse);
            break;
          case LONG:
            mutated[i] = DoubleValuesSource.fromLongField(s.getField()).getSortField(reverse);
            break;
          case FLOAT:
            mutated[i] = DoubleValuesSource.fromFloatField(s.getField()).getSortField(reverse);
            break;
          case DOUBLE:
            mutated[i] = DoubleValuesSource.fromDoubleField(s.getField()).getSortField(reverse);
            break;
          case SCORE:
            mutated[i] = DoubleValuesSource.SCORES.getSortField(reverse);
            break;
          default:
            mutated[i] = original[i];
        }
      } else {
        mutated[i] = original[i];
      }
    }

    return new Sort(mutated);
  }
 public void testHashCodeAndEquals() {
   DoubleValuesSource vs1 = DoubleValuesSource.fromDoubleField("double");
   DoubleValuesSource vs2 = DoubleValuesSource.fromDoubleField("double");
   assertEquals(vs1, vs2);
   assertEquals(vs1.hashCode(), vs2.hashCode());
   DoubleValuesSource v3 = DoubleValuesSource.fromLongField("long");
   assertFalse(vs1.equals(v3));
 }