package org.sakaiproject.citation.impl.openurl; import junit.framework.TestCase; public class KEVFormatTest extends TestCase { // Example from solo.ouls.ox.ac.uk // url_ctx_fmt=infofi/fmt:kev:mtx:ctx - looks like the value is bad. // ctx_enc=info:ofi/enc:UTF-8 - Should just be UTF-8 according to the docs. // ctx_tim= Shouldn't include a timezone (must be in UST). private static final String PRIMO_EXAMPLE = "ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&" + "ctx_tim=2010-10-20T13:27:00IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&" + "rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Journal-UkOxU&rft_val_fmt=info:ofi/fmt:kev:mtx:book&" + "rft.genre=book&rft.atitle=&rft.jtitle=&rft.btitle=Linux%20in%20a%20nutshell&rft.aulast=Siever&" + "rft.auinit=&rft.auinit1=&rft.auinitm=&rft.ausuffix=&rft.au=&rft.aucorp=&rft.volume=&rft.issue=&" + "rft.part=&rft.quarter=&rft.ssn=&rft.spage=&rft.epage=&rft.pages=&rft.artnum=&rft.issn=&rft.eissn=&" + "rft.isbn=9780596154486&rft.sici=&rft.coden=&rft_id=info:doi/&rft.object_id=&" + "rft_dat=<UkOxU>UkOxUb17140770</UkOxU>&rft.eisbn="; // Example from worldcat private static final String WORLDCAT_EXAMPLE = "FirstSearch:WorldCat&genre=book&isbn=9780596154486&" + "title=Linux+in+a+nutshell.&date=2009&aulast=Siever&aufirst=Ellen&id=doi:&" + "pid=<accession+number>403436468</accession+number><fssessid>0</fssessid><edition>6th+ed.+/</edition>&" + "url_ver=Z39.88-2004&rfr_id=info:sid/firstsearch.oclc.org:WorldCat&rft_val_fmt=info:ofi/fmt:kev:mtx:book&" + "req_dat=<sessionid>0</sessionid>&rfe_dat=<accessionnumber>403436468</accessionnumber>&" + "rft_id=info:oclcnum/403436468&rft_id=urn:ISBN:9780596154486&rft.aulast=Siever&" + "rft.aufirst=Ellen&rft.btitle=Linux+in+a+nutshell.&rft.date=2009&rft.isbn=9780596154486&" + "rft.place=Beijing+;;Farnham+;;Sebastopol&rft.pub=O'Reilly&rft.edition=6th+ed.+/&rft.genre=book"; // Example from copac private static final String COPAC_EXAMPLE = "ctx_ver=Z39.88-2004&rfr_id=info:sid/mimas.ac.uk:copac&" + "rft_val_fmt=info:ofi/fmt:kev:mtx:book&rft.isbn=0596154488&rft.genre=book&" + "rft.btitle=Linux%20in%20a%20nutshell.&rft.au=Siever,%20Ellen.&rft.place=Beijing%20&rft.pub=O'Reilly,&" + "rft.date=2009&rft.edition=6th%20ed.%20/%20Ellen%20Siever%20...%20[et%20al.].&" + "rft.pages=xxii,%20917%20p.%20:%20ill.%20&%2023%20cm.=&rft.series="; public void testParsePrimo() { KEVFormat format = new KEVFormat(); ContextObject linuxNutshell = format.parse(PRIMO_EXAMPLE); ContextObjectEntity book = linuxNutshell.getEntity(ContextObject.Entity.REFERENT); assertEquals("Linux in a nutshell", book.getValue("btitle")); assertEquals("9780596154486", book.getValue("isbn")); assertTrue(book.getIds().contains("info:doi/") ); assertEquals("<UkOxU>UkOxUb17140770</UkOxU>", book.getData()); } public void testParseWorldcat() { KEVFormat format = new KEVFormat(); ContextObject linuxNutshell = format.parse(WORLDCAT_EXAMPLE); ContextObjectEntity book = linuxNutshell.getEntity(ContextObject.Entity.REFERENT); assertEquals("info:ofi/fmt:kev:mtx:book",book.getFormat()); assertEquals("Beijing ;;Farnham ;;Sebastopol", book.getValue("place")); } public void testParseCopac() { KEVFormat format = new KEVFormat(); ContextObject linuxNutshell = format.parse(WORLDCAT_EXAMPLE); ContextObjectEntity book = linuxNutshell.getEntity(ContextObject.Entity.REFERENT); assertEquals("info:ofi/fmt:kev:mtx:book",book.getFormat()); assertEquals("Beijing ;;Farnham ;;Sebastopol", book.getValue("place")); assertEquals("book", book.getValue("genre")); } }