@Test
public void testParse() {

    TestResourceStringData[] expectedData = {
            new TestResourceStringData("msg_hello", "Hello", 1),
            new TestResourceStringData("msg_bye", "Bye", 2)
    };
    ResourceFilter filter = ResourceFilterFactory.getResourceFilter(CSVFilter.ID);
    try (InputStream inStream = this.getClass().getResourceAsStream("/test.csv")) {
        LanguageBundle bundle = filter.parse(inStream, new FilterOptions(Locale.ENGLISH));
        List<ResourceString> resStrings = bundle.getSortedResourceStrings();
        assertEquals("Number of resource strings", expectedData.length, resStrings.size());
        int idx = 0;
        for (ResourceString resString : resStrings) {
            String key = resString.getKey();
            String value = resString.getValue();
            int seqNum = resString.getSequenceNumber();
            TestResourceStringData expected = expectedData[idx++];
            assertEquals("Resource key at index " + idx, expected.key, key);
            assertEquals("Resource value at index " + idx, expected.value, value);
            assertEquals("Resource sequence number at index " + idx, expected.seq, seqNum);
        }
    } catch (IOException e) {
        fail(e.getMessage());
    } catch (ResourceFilterException e) {
        fail(e.getMessage());
    }
}