001/* 002 * Licensed under the Apache License, Version 2.0 (the "License"); 003 * you may not use this file except in compliance with the License. 004 * You may obtain a copy of the License at 005 * 006 * http://www.apache.org/licenses/LICENSE-2.0 007 * 008 * Unless required by applicable law or agreed to in writing, software 009 * distributed under the License is distributed on an "AS IS" BASIS, 010 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 011 * See the License for the specific language governing permissions and 012 * limitations under the License. 013 */ 014package org.gbif.dwc; 015 016import org.gbif.dwc.record.Record; 017import org.gbif.dwc.record.StarRecord; 018import org.gbif.dwc.terms.DcTerm; 019import org.gbif.dwc.terms.DwcTerm; 020import org.gbif.utils.file.FileUtils; 021 022import java.io.IOException; 023 024import org.junit.jupiter.api.Test; 025 026import static org.junit.jupiter.api.Assertions.assertEquals; 027import static org.junit.jupiter.api.Assertions.assertNotNull; 028 029public class StarIteratorTest { 030 031 @Test 032 public void testIterator() throws IOException, UnsupportedArchiveException { 033 // test proper archive 034 Archive arch = DwcFiles.fromLocation(FileUtils.getClasspathFile("archive-dwc").toPath()); 035 assertNotNull(arch.getCore()); 036 assertEquals(2, arch.getExtensions().size()); 037 int found = 0; 038 int extensionRecords = 0; 039 for (StarRecord rec : arch) { 040 //System.out.println(rec.core().id() + " --> " + rec.size()); 041 // count all extension records 042 extensionRecords += rec.size(); 043 044 if (rec.core().id().equals("544382")) { 045 found++; 046 assertEquals("Tursiops truncatus truncatus Montagu", rec.core().value(DwcTerm.scientificName)); 047 // test extension iter 048 int i = 0; 049 for (Record er : rec) { 050 i++; 051 } 052 assertEquals(27, i); 053 } else if (rec.core().id().equals("105833")) { 054 found++; 055// 105833 Chinese river dolphin English 056// 105833 Chinese lake dolphin English 057// 105833 Pei c’hi Chinese 058// 105833 White flag dolphin English 059 int i = 0; 060 for (Record er : rec) { 061 i++; 062 if ("Chinese river dolphin".equals(er.value(DwcTerm.vernacularName))) { 063 assertEquals("English", er.value(DcTerm.language)); 064 assertEquals("English", er.value(DcTerm.language)); 065 } else if ("Chinese lake dolphin".equals(er.value(DwcTerm.vernacularName))) { 066 assertEquals("English", er.value(DcTerm.language)); 067 } else if ("Pei c’hi".equals(er.value(DwcTerm.vernacularName))) { 068 assertEquals("Chinese", er.value(DcTerm.language)); 069 } else { 070 assertEquals("White flag dolphin", er.value(DwcTerm.vernacularName)); 071 assertEquals("English", er.value(DcTerm.language)); 072 } 073 } 074 System.out.println(rec); 075 assertEquals(4, i); 076 } else if (rec.core().id().equals("105838")) { 077 found++; 078// 105838 Delfin de La Plata Spanish 079// 105838 Franciscana Spanish 080// 105838 Franciscano Portuguese 081// 105838 La Plata dolphin English 082// 105838 Tonina Spanish 083// 105838 Toninha Portuguese 084 int i = 0; 085 for (Record er : rec) { 086 i++; 087 if ("Delfin de La Plata".equals(er.value(DwcTerm.vernacularName))) { 088 assertEquals("Spanish", er.value(DcTerm.language)); 089 } else if ("Franciscana".equals(er.value(DwcTerm.vernacularName))) { 090 assertEquals("Spanish", er.value(DcTerm.language)); 091 } else if ("Franciscano".equals(er.value(DwcTerm.vernacularName))) { 092 assertEquals("Portuguese", er.value(DcTerm.language)); 093 } else if ("La Plata dolphin".equals(er.value(DwcTerm.vernacularName))) { 094 assertEquals("English", er.value(DcTerm.language)); 095 } else if ("Tonina".equals(er.value(DwcTerm.vernacularName))) { 096 assertEquals("Spanish", er.value(DcTerm.language)); 097 } else { 098 assertEquals("Toninha", er.value(DwcTerm.vernacularName)); 099 assertEquals("Portuguese", er.value(DcTerm.language)); 100 } 101 } 102 assertEquals(6, i); 103 } 104 105 } 106 assertEquals(3, found); 107 assertEquals(1057, extensionRecords); 108 } 109}