Exemple #1
0
  public void testTraitFunctors() throws Exception {
    // Make a publisher
    Map<String, String> publisherMap = new LinkedHashMap<String, String>();
    Publisher publisher = new Publisher(publisherMap);

    // Make a title with that publisher
    Map<String, String> titleMap = new LinkedHashMap<String, String>();
    Title title = new Title(publisher, titleMap);

    // Make an AU with that title
    Au au = new Au(title);

    // Test AU traits
    au.put(Au.EDITION, EDITION_VALUE);
    assertEquals(EDITION_VALUE, Au.traitFunctor("au:edition").apply(au));
    assertSame(Au.traitFunctor("au:edition"), Au.traitFunctor("edition"));
    au.put(Au.EISBN, EISBN_VALUE);
    assertEquals(EISBN_VALUE, Au.traitFunctor("au:eisbn").apply(au));
    assertSame(Au.traitFunctor("au:eisbn"), Au.traitFunctor("eisbn"));
    au.put(Au.ISBN, ISBN_VALUE);
    assertEquals(ISBN_VALUE, Au.traitFunctor("au:isbn").apply(au));
    assertSame(Au.traitFunctor("au:isbn"), Au.traitFunctor("isbn"));
    au.put(Au.NAME, NAME_VALUE);
    assertEquals(NAME_VALUE, Au.traitFunctor("au:name").apply(au));
    assertSame(Au.traitFunctor("au:name"), Au.traitFunctor("name"));
    au.put(Au.PROVIDER, PROVIDER_VALUE);
    assertEquals(PROVIDER_VALUE, Au.traitFunctor("au:provider").apply(au));
    assertSame(Au.traitFunctor("au:provider"), Au.traitFunctor("provider"));
    au.put(Au.PROXY, PROXY_VALUE);
    assertEquals(PROXY_VALUE, Au.traitFunctor("au:proxy").apply(au));
    assertSame(Au.traitFunctor("au:proxy"), Au.traitFunctor("proxy"));
    au.put(Au.RIGHTS, RIGHTS_VALUE);
    assertEquals(RIGHTS_VALUE, Au.traitFunctor("au:rights").apply(au));
    assertSame(Au.traitFunctor("au:rights"), Au.traitFunctor("rights"));
    au.put(Au.STATUS, STATUS_VALUE);
    assertEquals(STATUS_VALUE, Au.traitFunctor("au:status").apply(au));
    assertSame(Au.traitFunctor("au:status"), Au.traitFunctor("status"));
    au.put(Au.STATUS1, STATUS1_VALUE);
    assertEquals(STATUS1_VALUE, Au.traitFunctor("au:status1").apply(au));
    assertSame(Au.traitFunctor("au:status1"), Au.traitFunctor("status1"));
    au.put(Au.STATUS2, STATUS2_VALUE);
    assertEquals(STATUS2_VALUE, Au.traitFunctor("au:status2").apply(au));
    assertSame(Au.traitFunctor("au:status2"), Au.traitFunctor("status2"));
    au.put(Au.VOLUME, VOLUME_VALUE);
    assertEquals(VOLUME_VALUE, Au.traitFunctor("au:volume").apply(au));
    assertSame(Au.traitFunctor("au:volume"), Au.traitFunctor("volume"));
    au.put(Au.YEAR, YEAR_VALUE);
    assertEquals(YEAR_VALUE, Au.traitFunctor("au:year").apply(au));
    assertSame(Au.traitFunctor("au:year"), Au.traitFunctor("year"));
    au.put(String.format("param[%s]", PARAM1_KEY), PARAM1_VALUE);
    assertEquals(
        PARAM1_VALUE, Au.traitFunctor(String.format("au:param[%s]", PARAM1_KEY)).apply(au));
    assertEquals(PARAM1_VALUE, Au.traitFunctor(String.format("param[%s]", PARAM1_KEY)).apply(au));
    au.put(String.format("nondefparam[%s]", NONDEFPARAM1_KEY), NONDEFPARAM1_VALUE);
    assertEquals(
        NONDEFPARAM1_VALUE,
        Au.traitFunctor(String.format("au:nondefparam[%s]", NONDEFPARAM1_KEY)).apply(au));
    assertEquals(
        NONDEFPARAM1_VALUE,
        Au.traitFunctor(String.format("nondefparam[%s]", NONDEFPARAM1_KEY)).apply(au));
    au.put(String.format("attr[%s]", ATTR1_KEY), ATTR1_VALUE);
    assertEquals(ATTR1_VALUE, Au.traitFunctor(String.format("au:attr[%s]", ATTR1_KEY)).apply(au));
    assertEquals(ATTR1_VALUE, Au.traitFunctor(String.format("attr[%s]", ATTR1_KEY)).apply(au));
    au.put(FOO_KEY, FOO_VALUE);
    assertEquals(FOO_VALUE, Au.traitFunctor(String.format("au:%s", FOO_KEY)).apply(au));
    assertNull(Au.traitFunctor(FOO_KEY));

    au.put(Au.PLUGIN, PLUGIN1);
    assertEquals(PLUGIN1, Au.traitFunctor("au:plugin").apply(au));
    assertSame(Au.traitFunctor("au:plugin"), Au.traitFunctor("plugin"));
    au.put(String.format("param[%s]", PARAM2_KEY), PARAM2_VALUE);
    au.put(String.format("nondefparam[%s]", NONDEFPARAM2_KEY), NONDEFPARAM2_VALUE);
    assertEquals(AUID1, Au.traitFunctor("au:auid").apply(au));
    assertSame(Au.traitFunctor("au:auid"), Au.traitFunctor("auid"));
    assertEquals(AUIDPLUS1, Au.traitFunctor("au:auidplus").apply(au));
    assertSame(Au.traitFunctor("au:auidplus"), Au.traitFunctor("auidplus"));

    au.put(Au.PLUGIN_PREFIX, PLUGIN_PREFIX_VALUE);
    assertEquals(PLUGIN_PREFIX_VALUE, Au.traitFunctor("au:pluginPrefix").apply(au));
    assertSame(Au.traitFunctor("au:pluginPrefix"), Au.traitFunctor("pluginPrefix"));
    au.put(Au.PLUGIN_SUFFIX, PLUGIN_SUFFIX_VALUE);
    assertEquals(PLUGIN_SUFFIX_VALUE, Au.traitFunctor("au:pluginSuffix").apply(au));
    assertSame(Au.traitFunctor("au:pluginSuffix"), Au.traitFunctor("pluginSuffix"));

    // Test title traits
    titleMap.put(Title.NAME, TestTitle.NAME_VALUE);
    assertEquals(TestTitle.NAME_VALUE, Au.traitFunctor("title:name").apply(au));
    assertSame(Au.traitFunctor("title:name"), Au.traitFunctor("title"));
    titleMap.put(Title.DOI, TestTitle.DOI_VALUE);
    assertEquals(TestTitle.DOI_VALUE, Au.traitFunctor("title:doi").apply(au));
    assertSame(Au.traitFunctor("title:doi"), Au.traitFunctor("doi"));
    titleMap.put(Title.EISSN, TestTitle.EISSN_VALUE);
    assertEquals(TestTitle.EISSN_VALUE, Au.traitFunctor("title:eissn").apply(au));
    assertSame(Au.traitFunctor("title:eissn"), Au.traitFunctor("eissn"));
    titleMap.put(Title.ISSN, TestTitle.ISSN_VALUE);
    assertEquals(TestTitle.ISSN_VALUE, Au.traitFunctor("title:issn").apply(au));
    assertSame(Au.traitFunctor("title:issn"), Au.traitFunctor("issn"));
    titleMap.put(Title.ISSNL, TestTitle.ISSNL_VALUE);
    assertEquals(TestTitle.ISSNL_VALUE, Au.traitFunctor("title:issnl").apply(au));
    assertSame(Au.traitFunctor("title:issnl"), Au.traitFunctor("issnl"));
    titleMap.put(Title.TYPE, TestTitle.TYPE_VALUE);
    assertEquals(TestTitle.TYPE_VALUE, Au.traitFunctor("title:type").apply(au));
    assertSame(Au.traitFunctor("title:type"), Au.traitFunctor("type"));
    titleMap.put(TestTitle.FOO_KEY, TestTitle.FOO_VALUE);
    assertEquals(
        TestTitle.FOO_VALUE,
        Au.traitFunctor(String.format("title:%s", TestTitle.FOO_KEY)).apply(au));
    assertNull(Au.traitFunctor(String.format("title:X%s", TestTitle.FOO_KEY)).apply(au));

    // Test publisher traits
    publisherMap.put(Publisher.NAME, TestPublisher.NAME_VALUE);
    assertEquals(TestPublisher.NAME_VALUE, Au.traitFunctor("publisher:name").apply(au));
    assertSame(Au.traitFunctor("publisher:name"), Au.traitFunctor("publisher"));
    publisherMap.put(TestPublisher.FOO_KEY, TestPublisher.FOO_VALUE);
    assertEquals(
        TestPublisher.FOO_VALUE,
        Au.traitFunctor(String.format("publisher:%s", TestPublisher.FOO_KEY)).apply(au));
    assertNull(Au.traitFunctor(String.format("publisher:X%s", TestPublisher.FOO_KEY)).apply(au));
  }