Package com.ontology2.bakemono.pse3

Source Code of com.ontology2.bakemono.pse3.SchwarzeneggerTest

package com.ontology2.bakemono.pse3;

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.List;
import java.util.Set;

import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Mapper.Context;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;

import com.google.common.base.Charsets;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.hp.hpl.jena.graph.Node;
import com.hp.hpl.jena.graph.Node_URI;
import com.hp.hpl.jena.graph.Triple;
import com.ontology2.bakemono.abstractions.KeyValueAcceptor;
import com.ontology2.bakemono.jena.WritableTriple;

public class SchwarzeneggerTest {
    PSE3Mapper pse3mapper;
    private BufferedReader reader;

    @Before
    public void setup() {
        pse3mapper=new PSE3Mapper();
        pse3mapper.accepted=mock(KeyValueAcceptor.class);
        InputStream input=getClass().getResourceAsStream("arnold-10.nt");
        reader = new BufferedReader(new InputStreamReader(input,Charsets.UTF_8));
    }
   
    @Test
    public void tenInputs() throws IOException {
        int count=0;
        while(reader.readLine()!=null)
            count++;
       
        assertEquals(10,count);
    }
   
    @Test
    public void noDuplicates() throws IOException, InterruptedException {
        int count=1;
        String line;
        List<WritableTriple> outputs=Lists.newArrayList();
       
        while((line=reader.readLine())!=null) {
            LongWritable key=new LongWritable(count);
            Text value=new Text(line);
            Mapper.Context context = mock(Context.class);
            pse3mapper.map(key, value, context);
            ArgumentCaptor<WritableTriple> captorS=ArgumentCaptor.forClass(WritableTriple.class);
            ArgumentCaptor<WritableTriple> captorV=ArgumentCaptor.forClass(WritableTriple.class);
            verify(pse3mapper.accepted).write(
                    captorS.capture(),
                    captorV.capture(),
                    eq(context));
            outputs.add(captorS.getValue());
            assertEquals(captorS.getValue(),captorV.getValue());
            count++;
        }
       
        // no triple is equal to any other triple
       
        assertEquals(10,outputs.size());
        for(int i=0;i<outputs.size();i++) {
            for(int j=0;j<i;j++) {
                assertFalse(outputs.get(i).equals(outputs.get(j)));
            }
        }
       
        // each triple is equal to itself
       
        for(int i=0;i<outputs.size();i++) {
            assertTrue(outputs.get(i).equals(outputs.get(i)));
        }
       
        // the triple that disappears in the full system appears in the output
       
        WritableTriple croatianKey=new WritableTriple(new Triple(
                Node_URI.createURI("http://rdf.basekb.com/ns/m.0tc7")
                ,Node_URI.createURI("http://rdf.basekb.com/ns/type.object.key")
                ,Node.createLiteral("/wikipedia/hr_title/Arnold_Schwarzenegger")
        ));
       
        assertTrue(outputs.contains(croatianKey));
       
        //
        // hash values are all unique (they don't need to be,  but a collision
        // should be unlikely.)
        //
        Set<Integer> hashValues=Sets.newHashSet();
        for(WritableTriple that:outputs)
            hashValues.add(that.hashCode());
       
        assertEquals(10,hashValues.size());
    }
}
TOP

Related Classes of com.ontology2.bakemono.pse3.SchwarzeneggerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.