// $HeadURL: // http://seanderickson1@forge.abcd.harvard.edu/svn/screensaver/trunk/core/src/test/java/edu/harvard/med/screensaver/io/libraries/LibraryCopyPlateListParserTest.java // $ // $Id$ // // Copyright © 2006, 2010, 2011, 2012 by the President and Fellows of Harvard College. // // Screensaver is an open-source project developed by the ICCB-L and NSRB labs // at Harvard Medical School. This software is distributed under the terms of // the GNU General Public License. package edu.harvard.med.screensaver.io.libraries; import java.util.List; import junit.framework.TestCase; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import edu.harvard.med.screensaver.util.Pair; public class LibraryCopyPlateListParserTest extends TestCase { public void testSingleLineInput() { LibraryCopyPlateListParserResult result = LibraryCopyPlateListParser.parsePlateCopies("1 \"Copy X\" 2 D, 111-112, E, 113,114"); assertEquals("syntax errors size", 0, result.getErrors().size()); assertEquals("Library plates parsed", Sets.newHashSet(1, 2, 113, 114), result.getPlates()); assertEquals("Library copies parsed", Sets.newHashSet("Copy X", "D", "E"), result.getCopies()); assertEquals("Library plate ranges parsed,", Lists.newArrayList(Pair.newPair(111, 112)), Lists.newArrayList(result.getPlateRanges())); } public void testWithNoSpacesBetweenPlateAndCopy() { LibraryCopyPlateListParserResult result = LibraryCopyPlateListParser.parsePlateCopies("111A"); assertEquals("syntax errors size", 0, result.getErrors().size()); assertEquals("Library plates parsed", Sets.newHashSet(111), result.getPlates()); assertEquals("Library copies parsed", Sets.newHashSet("A"), result.getCopies()); } public void testMultiLine() { //LibraryCopyPlateListParserResult result = LibraryCopyPlateListParser.parsePlateCopies("1 C 2 D, 111-112\n E, 113-114"); List<LibraryCopyPlateListParserResult> results = LibraryCopyPlateListParser.parsePlateCopiesSublists("1 C 2 D, 111-112\n E, 113-114 J"); int i = 0; assertEquals(2, results.size()); for (LibraryCopyPlateListParserResult result : results) { assertEquals("syntax errors size", 0, result.getErrors().size()); if (i == 0) { assertEquals("Library plates parsed", Sets.newHashSet(1, 2), result.getPlates()); assertEquals("Library plate ranges parsed,", Lists.newArrayList(Pair.newPair(111, 112)), Lists.newArrayList(result.getPlateRanges())); assertEquals("Library copies parsed", Sets.newHashSet("C", "D"), result.getCopies()); } else if (i == 1) { assertTrue(result.getPlates().isEmpty()); assertEquals("Library copies parsed", Sets.newHashSet( "E", "J"), result.getCopies()); assertEquals("Library plate ranges parsed,", Lists.newArrayList( Pair.newPair(113, 114)), Lists.newArrayList(result.getPlateRanges())); } i++; } } public void testWithErrors() { LibraryCopyPlateListParserResult result = LibraryCopyPlateListParser.parsePlateCopies("1 C 2 D, 111-\n E, 113-114"); assertEquals("syntax errors size", 1, result.getErrors().size()); assertEquals(Lists.newArrayList("unparseable range: 111-"), result.getErrors()); } }