package org.jabref.model.entry; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; public class KeywordListTest { private KeywordList keywords; @Before public void setUp() throws Exception { keywords = new KeywordList(); keywords.add("keywordOne"); keywords.add("keywordTwo"); } @Test public void parseEmptyStringReturnsEmptyList() throws Exception { assertEquals(new KeywordList(), KeywordList.parse("", ',')); } @Test public void parseOneWordReturnsOneKeyword() throws Exception { assertEquals(new KeywordList("keywordOne"), KeywordList.parse("keywordOne", ',')); } @Test public void parseTwoWordReturnsTwoKeywords() throws Exception { assertEquals(new KeywordList("keywordOne", "keywordTwo"), KeywordList.parse("keywordOne, keywordTwo", ',')); } @Test public void parseTwoWordReturnsTwoKeywordsWithoutSpace() throws Exception { assertEquals(new KeywordList("keywordOne", "keywordTwo"), KeywordList.parse("keywordOne,keywordTwo", ',')); } @Test public void parseTwoWordReturnsTwoKeywordsWithDifferentDelimiter() throws Exception { assertEquals(new KeywordList("keywordOne", "keywordTwo"), KeywordList.parse("keywordOne| keywordTwo", '|')); } @Test public void parseWordsWithWhitespaceReturnsOneKeyword() throws Exception { assertEquals(new KeywordList("keyword and one"), KeywordList.parse("keyword and one", ',')); } @Test public void parseWordsWithWhitespaceAndCommaReturnsTwoKeyword() throws Exception { assertEquals(new KeywordList("keyword and one", "and two"), KeywordList.parse("keyword and one, and two", ',')); } @Test public void parseIgnoresDuplicates() throws Exception { assertEquals(new KeywordList("keywordOne", "keywordTwo"), KeywordList.parse("keywordOne, keywordTwo, keywordOne", ',')); } @Test public void parseWordsWithBracketsReturnsOneKeyword() throws Exception { assertEquals(new KeywordList("[a] keyword"), KeywordList.parse("[a] keyword", ',')); } @Test public void asStringAddsSpaceAfterDelimiter() throws Exception { assertEquals("keywordOne, keywordTwo", keywords.getAsString(',')); } @Test public void parseHierarchicalChain() throws Exception { Keyword expected = Keyword.of("Parent", "Node", "Child"); assertEquals(new KeywordList(expected), KeywordList.parse("Parent > Node > Child", ',', '>')); } @Test public void parseTwoHierarchicalChains() throws Exception { Keyword expectedOne = Keyword.of("Parent1", "Node1", "Child1"); Keyword expectedTwo = Keyword.of("Parent2", "Node2", "Child2"); assertEquals(new KeywordList(expectedOne, expectedTwo), KeywordList.parse("Parent1 > Node1 > Child1, Parent2 > Node2 > Child2", ',', '>')); } }