@Test
  public void testBinaryVectorsChangeGradually() {
    FlagConfig flagConfig =
        FlagConfig.getFlagConfig(new String[] {"-vectortype", "binary", "-dimension", "2048"});
    NumberRepresentation numberRepresentation = new NumberRepresentation(flagConfig);

    VectorStoreRAM vsr = numberRepresentation.getNumberVectors(0, 4);
    assertEquals(0.75, vsr.getVector(0).measureOverlap(vsr.getVector(1)), TOL);
  }
  @Test
  public void testAbsoluteValuesOfEndpointsDontMatter() {
    FlagConfig flagConfig =
        FlagConfig.getFlagConfig(new String[] {"-vectortype", "binary", "-dimension", "2048"});
    NumberRepresentation numberRepresentation = new NumberRepresentation(flagConfig);

    VectorStoreRAM vsr1 = numberRepresentation.getNumberVectors(0, 4);
    VectorStoreRAM vsr2 = numberRepresentation.getNumberVectors(8, 12);
    assertEquals(1.0, vsr1.getVector(0).measureOverlap(vsr2.getVector(8)), TOL);
    assertEquals(1.0, vsr1.getVector(2).measureOverlap(vsr2.getVector(10)), TOL);
  }
  @Test
  public void testCreateAndGetNumberVectors() {
    FlagConfig flagConfig =
        FlagConfig.getFlagConfig(new String[] {"-vectortype", "real", "-dimension", "200"});
    NumberRepresentation numberRepresentation = new NumberRepresentation(flagConfig);

    VectorStoreRAM vsr2 = numberRepresentation.getNumberVectors(0, 2);
    assertEquals(5, vsr2.getNumVectors());

    VectorStoreRAM vsr4 = numberRepresentation.getNumberVectors(0, 4);
    assertEquals(7, vsr4.getNumVectors());

    // The beginning and end vectors should be the same in all cases.
    assertEquals(1.0, vsr2.getVector(0).measureOverlap(vsr4.getVector(0)), TOL);
    assertEquals(1.0, vsr2.getVector(2).measureOverlap(vsr4.getVector(4)), TOL);
  }
  @Test
  public void testVectorsNearerToBeginningOrEnd() {
    FlagConfig flagConfig =
        FlagConfig.getFlagConfig(new String[] {"-vectortype", "binary", "-dimension", "2048"});
    NumberRepresentation numberRepresentation = new NumberRepresentation(flagConfig);

    VectorStoreRAM vsr = numberRepresentation.getNumberVectors(0, 4);
    assertTrue(
        vsr.getVector(0).measureOverlap(vsr.getVector(1))
            > vsr.getVector(4).measureOverlap(vsr.getVector(1)));
    assertTrue(
        vsr.getVector(4).measureOverlap(vsr.getVector(3))
            > vsr.getVector(3).measureOverlap(vsr.getVector(0)));
    /**
     * This "half-way" equality isn't exact, demonstrating that I don't exactly understand the
     * process. -DW.
     */
    assertEquals(
        vsr.getVector(4).measureOverlap(vsr.getVector(2)),
        vsr.getVector(2).measureOverlap(vsr.getVector(0)),
        TOL);
  }