@Test
 public void inputTest2() {
   m.updateSignature(2);
   String expected = "2";
   String result = m.getCurrentSignature();
   assertEquals(expected, result);
 }
 // test deletion
 @Test
 public void deleteTest1() {
   // if there's nothing and we do a deletion, nothing happens
   m.removeLastSignature();
   assertTrue(m.getTexts().isEmpty());
   assertEquals("", m.getCurrentSignature());
 }
 // test word entry
 @Test
 public void entryTest1() {
   m.updateSignature(2); // a
   m.insertWord();
   ArrayList<StringBuffer> expected = new ArrayList<StringBuffer>();
   expected.add(new StringBuffer("a"));
   ArrayList<StringBuffer> result = m.getTexts();
   for (int i = 0; i < expected.size(); i++) {
     assertEquals(expected.get(i).toString(), result.get(i).toString());
   }
 }
  @Test
  public void testTermbindsIncludesMetaproperties() throws URISyntaxException {
    Integer totalResults = null;
    Resource thisMetaPage = createMetadata(false, totalResults);

    for (Property p : expectedTermboundProperties) {
      Model model = thisMetaPage.getModel();
      if (!model.contains(null, API.property, p)) {
        fail("term bindings should include " + model.shortForm(p.getURI()));
      }
    }
  }
 @Test
 public void inputTest3() {
   m.updateSignature(2);
   m.updateSignature(9);
   m.updateSignature(8);
   m.updateSignature(9);
   m.updateSignature(8);
   m.updateSignature(3); // if we keep pressing when there's no more corresponding words,
   m.updateSignature(7); // the signature will not get updated
   String expected = "29898";
   String result = m.getCurrentSignature();
   assertEquals(expected, result);
 }
 @Test
 public void deleteTest2() {
   m.updateSignature(2);
   m.updateSignature(7);
   m.updateSignature(7);
   m.updateSignature(5);
   m.updateSignature(3); // apple
   m.removeLastSignature();
   m.removeLastSignature();
   String expected = "277";
   String result = m.getCurrentSignature();
   assertEquals(expected, result);
 }
 // test the selection cycle
 @Test
 public void cycleTest1() {
   this.m.updateSignature(2);
   String expected = "a";
   String result = m.getListOfPrefixes().get(0).toString();
   assertEquals(expected, result);
 }
 @Test
 public void cycleTest2() {
   this.m.updateSignature(2);
   this.m.cyclePrefixSelection();
   String expected = "b";
   String result = m.getListOfPrefixes().get(1).toString();
   assertEquals(expected, result);
 }
  /**
   * Check that a predicate for which no shortnames are defined in name map still gets a term
   * binding in the metadata.
   */
  @Test
  public void testTermBindingsCoverAllPredicates() throws URISyntaxException {
    Resource thisPage = ResourceFactory.createResource("elda:thisPage");
    String pageNumber = "1";
    Bindings cc = new Bindings();
    URI reqURI = new URI("");
    //
    EndpointDetails spec =
        new EndpointDetails() {

          @Override
          public boolean isListEndpoint() {
            return true;
          }

          @Override
          public boolean hasParameterBasedContentNegotiation() {
            return false;
          }
        };
    EndpointMetadata em = new EndpointMetadata(spec, thisPage, pageNumber, cc, reqURI);
    //
    PrefixMapping pm =
        PrefixMapping.Factory.create().setNsPrefix("this", "http://example.com/root#");
    Model toScan = ModelIOUtils.modelFromTurtle(":a <http://example.com/root#predicate> :b.");
    toScan.setNsPrefixes(pm);
    Resource predicate = toScan.createProperty("http://example.com/root#predicate");
    Model meta = ModelFactory.createDefaultModel();
    Resource exec = meta.createResource("fake:exec");
    ShortnameService sns = new StandardShortnameService();
    //		APIEndpoint.Request r = new APIEndpoint.Request( new Controls(), reqURI, cc );

    CompleteContext c =
        new CompleteContext(CompleteContext.Mode.PreferPrefixes, sns.asContext(), pm)
            .include(toScan);

    em.addTermBindings(toScan, meta, exec, c);

    @SuppressWarnings("unused")
    Map<String, String> termBindings = c.Do();
    Resource tb = meta.listStatements(null, API.termBinding, Any).nextStatement().getResource();
    assertTrue(meta.contains(tb, API.label, "this_predicate"));
    assertTrue(meta.contains(tb, API.property, predicate));
  }
 @Test
 public void deleteTest3() {
   // if we do a deletion and there's no signature we are working on,
   // it should go back to the previously typed word
   m.updateSignature(2);
   m.updateSignature(3);
   m.insertWord();
   m.updateSignature(2);
   m.updateSignature(2);
   m.insertWord();
   m.removeLastSignature(); // this delete will go back to the previously
   // inserted word
   ArrayList<StringBuffer> expectedList = new ArrayList<StringBuffer>();
   expectedList.add(new StringBuffer("ad"));
   String expectedSig = "22";
   ArrayList<StringBuffer> resultList = m.getTexts();
   String resultSig = m.getCurrentSignature();
   for (int i = 0; i < expectedList.size(); i++) {
     assertEquals(expectedList.get(i).toString(), resultList.get(i).toString());
   }
   assertEquals(expectedSig, resultSig);
 }
  private Resource createMetadata(final boolean isListEndpoint, Integer totalResults)
      throws URISyntaxException {
    Model objectModel = ModelFactory.createDefaultModel();
    MergedModels mergedModels = new MergedModels(objectModel);
    //
    Model meta = mergedModels.getMetaModel();
    //
    Resource thisMetaPage = meta.createResource("eh:/thisMetaPage");
    Resource SEP = meta.createResource("eh:/sparqlEndpoint");
    thisMetaPage.addProperty(API.sparqlEndpoint, SEP);

    Bindings bindings = new Bindings();
    URI ru = new URI(thisMetaPage.getURI());
    Resource uriForDefinition = objectModel.createResource(thisMetaPage.getURI());
    boolean suppressIPTO = true;
    int page = 1, perPage = 10;
    boolean hasMorePages = true;
    Context context = new Context();
    CompleteContext cc = new CompleteContext(Mode.PreferLocalnames, context, objectModel);
    //
    SetsMetadata setsMeta =
        new SetsMetadata() {

          @Override
          public void setMetadata(String type, Model meta) {}
        };
    WantsMetadata wantsMeta =
        new WantsMetadata() {

          @Override
          public boolean wantsMetadata(String name) {
            return true;
          }
        };
    //
    Map<String, View> views = new HashMap<String, View>();
    Set<FormatNameAndType> formats = new HashSet<FormatNameAndType>();
    //
    EndpointDetails details =
        new EndpointDetails() {

          @Override
          public boolean isListEndpoint() {
            return isListEndpoint;
          }

          @Override
          public boolean hasParameterBasedContentNegotiation() {
            return false;
          }
        };
    //
    EndpointMetadata.addAllMetadata(
        mergedModels,
        ru,
        uriForDefinition,
        bindings,
        cc,
        suppressIPTO,
        thisMetaPage,
        page,
        perPage,
        totalResults,
        hasMorePages,
        CollectionUtils.list(objectModel.createResource("eh:/item/_1")),
        setsMeta,
        wantsMeta,
        "SELECT",
        "VIEW",
        new TestCaches.FakeSource("Nemos"),
        views,
        formats,
        details);
    return thisMetaPage;
  }
 // test that the input buttons work
 @Test
 public void inputTest1() {
   String expected = "";
   String result = m.getCurrentSignature();
   assertEquals(expected, result);
 }