001package org.xbib.elasticsearch.river.jdbc.support;
002
003import org.testng.Assert;
004import org.testng.annotations.Test;
005import org.xbib.elasticsearch.plugin.jdbc.util.Values;
006
007/**
008 * Unit-test checking basic functionality of {@link Values}.
009 *
010 * @author pdegeus
011 */
012public class ValuesTests extends Assert {
013
014    @Test
015    public void testSingleValue() {
016        Values<String> vs = new Values<String>(null, "TEST", false);
017
018        Object[] values = vs.getValues();
019        assertEquals(1, values.length);
020        assertEquals("TEST", values[0]);
021    }
022
023    @Test
024    public void testSingleNull() {
025        Values<String> vs = new Values<String>(null, null, false);
026
027        Object[] values = vs.getValues();
028        assertEquals(values.length, 1);
029        assertEquals(values[0], null);
030    }
031
032    @Test
033    public void testMultipleValues() {
034        Values<String> vs = null;
035        vs = new Values<String>(vs, "TEST", false);
036        vs = new Values<String>(vs, "TEST2", false);
037
038        Object[] values = vs.getValues();
039        assertEquals(values.length, 2);
040        assertEquals(values[0], "TEST");
041        assertEquals(values[1], "TEST2");
042    }
043
044    @Test
045    public void testMultipleValuesNullFirst() {
046        Values<String> vs = null;
047        vs = new Values<String>(vs, null, false);
048        vs = new Values<String>(vs, "TEST", false);
049
050        Object[] values = vs.getValues();
051        assertEquals(values.length, 1);
052        assertEquals(values[0], "TEST");
053    }
054
055    @Test
056    public void testMultipleValuesNullLast() {
057        Values<String> vs = null;
058        vs = new Values<String>(vs, "TEST", false);
059        vs = new Values<String>(vs, null, false);
060
061        Object[] values = vs.getValues();
062        assertEquals(values.length, 1);
063        assertEquals(values[0], "TEST");
064    }
065
066    @Test
067    public void testMultipleValuesWithDuplicates() {
068        Values<String> vs = null;
069        vs = new Values<String>(vs, "TEST", false);
070        vs = new Values<String>(vs, "TEST2", false);
071        vs = new Values<String>(vs, "TEST", false);
072
073        Object[] values = vs.getValues();
074        assertEquals(values.length, 2);
075        assertEquals(values[0], "TEST");
076        assertEquals(values[1], "TEST2");
077    }
078
079    @Test
080    public void testMultipleValuesWithDuplicatesAndNull() {
081        Values<String> vs = null;
082        vs = new Values<String>(vs, "TEST", false);
083        vs = new Values<String>(vs, null, false);
084        vs = new Values<String>(vs, "TEST", false);
085
086        Object[] values = vs.getValues();
087        assertEquals(values.length, 1);
088        assertEquals(values[0], "TEST");
089    }
090
091    @Test
092    public void testExpandValue() {
093        Values<String> vs = null;
094        vs = new Values<String>(vs, "TEST,TEST2", true);
095        vs = new Values<String>(vs, null, true);
096        vs = new Values<String>(vs, "TEST3,TEST2", true);
097
098        Object[] values = vs.getValues();
099        assertEquals(values.length, 3);
100        assertEquals(values[0], "TEST");
101        assertEquals(values[1], "TEST2");
102        assertEquals(values[2], "TEST3");
103    }
104
105}