package net.sf.eclipsefp.haskell.core.cabalmodel;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.util.Set;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Test;
/**
*
* @author JP Moresmau
*
*/
public class JSONDescriptionHelperTest {
private JSONObject getJSONObject(final String file)throws IOException,JSONException{
return new JSONObject(CabalModelTest.getContent( file ));
}
@Test
public void executablesHaskell0() throws IOException,JSONException{
JSONObject obj=getJSONObject("Haskell0.json");
Set<String> exe=JSONDescriptionHelper.getNames(JSONDescriptionHelper.getExecutables( obj ));
assertNotNull(exe);
assertEquals(1,exe.size());
assertTrue(exe.contains("main"));
}
@Test
public void executablesScion() throws IOException,JSONException{
JSONObject obj=getJSONObject("scion.json");
Set<String> exe=JSONDescriptionHelper.getNames(JSONDescriptionHelper.getExecutables( obj ));
assertNotNull(exe);
assertEquals(1,exe.size());
assertTrue(exe.contains("scion-server"));
}
@Test
public void libraryHaskell0() throws IOException,JSONException{
JSONObject obj=getJSONObject("Haskell0.json");
assertFalse(JSONDescriptionHelper.hasLibrary( obj ));
}
@Test
public void libraryScion() throws IOException,JSONException{
JSONObject obj=getJSONObject("scion.json");
assertTrue(JSONDescriptionHelper.hasLibrary( obj ));
}
@Test
public void dependenciesHaskell0() throws IOException,JSONException{
JSONObject obj=getJSONObject("Haskell0.json");
Set<String> deps=JSONDescriptionHelper.getNames(JSONDescriptionHelper.getDependencies( obj ));
assertNotNull(deps);
assertEquals(2,deps.size());
assertTrue(deps.contains(("containers")));
assertTrue(deps.contains(("base")));
deps=JSONDescriptionHelper.getNames(JSONDescriptionHelper.getDependencies( JSONDescriptionHelper.getExecutables( obj ).get( 0 )));
assertNotNull(deps);
assertEquals(2,deps.size());
assertTrue(deps.contains(("containers")));
assertTrue(deps.contains(("base")));
}
@Test
public void dependenciesScion() throws IOException,JSONException{
JSONObject obj=getJSONObject("scion.json");
Set<String> deps=JSONDescriptionHelper.getNames(JSONDescriptionHelper.getDependencies( obj ));
assertNotNull(deps);
assertEquals(23,deps.size());
assertTrue(deps.contains(("containers")));
assertTrue(deps.contains(("base")));
assertTrue(deps.contains(("directory")));
assertTrue(deps.contains(("filepath")));
assertTrue(deps.contains(("ghc")));
assertTrue(deps.contains(("ghc-paths")));
assertTrue(deps.contains(("ghc-syb")));
assertTrue(deps.contains(("ghc-syb-utils")));
assertTrue(deps.contains(("hslogger")));
assertTrue(deps.contains(("json")));
assertTrue(deps.contains(("multiset")));
assertTrue(deps.contains(("time")));
assertTrue(deps.contains(("uniplate")));
assertTrue(deps.contains(("list-tries")));
assertTrue(deps.contains(("binary")));
assertTrue(deps.contains(("array")));
assertTrue(deps.contains(("old-time")));
assertTrue(deps.contains(("Cabal")));
assertTrue(deps.contains(("bytestring")));
assertTrue(deps.contains(("network")));
assertTrue(deps.contains(("network-bytestring")));
assertTrue(deps.contains(("utf8-string")));
assertTrue(deps.contains(("QuickCheck")));
}
}