package org.dodgybits.android.shuffle.test;
import java.io.StringReader;
import org.dodgybits.shuffle.android.core.model.Id;
import org.dodgybits.shuffle.android.core.model.Project;
import org.dodgybits.shuffle.android.synchronisation.tracks.parsing.IContextLookup;
import org.dodgybits.shuffle.android.synchronisation.tracks.parsing.ProjectParser;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.util.Xml;
import junit.framework.Assert;
import junit.framework.TestCase;
public class ProjectParserTests extends TestCase {
public ProjectParser CreateSUT() {
return new ProjectParser(new IContextLookup() {
@Override
public Id findContextIdByTracksId(Id tracksId) {
// TODO Auto-generated method stub
return Id.create(1234);
}
}, null);
}
public void testProjectParserBasicParsingTest() {
XmlPullParser xmlParser = Xml.newPullParser();
try {
xmlParser.setInput(new StringReader("<project>"+
"<completed-at type=\"datetime\" nil=\"true\"/>"+
"<created-at type=\"datetime\">2010-01-09T21:21:13+01:00</created-at>"+
"<default-context-id type=\"integer\" nil=\"true\"/>"+
"<default-tags nil=\"true\"/>"+
"<description nil=\"true\"/>"+
"<id type=\"integer\">4532</id>"+
"<name>Homework</name>"+
"<position type=\"integer\">1</position>"+
"<state>active</state>"+
"<updated-at type=\"datetime\">2010-02-03T10:37:19+01:00</updated-at>"+
"</project>"));
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ProjectParser parser = CreateSUT();
Project project = parser.parseSingle(xmlParser).getResult();
Assert.assertEquals("Homework", project.getName());
assertFalse(project.getHidden());
Assert.assertEquals(Id.create(4532), project.getTracksId());
Assert.assertEquals(1265189839000l, project.getModifiedDate());
assertEquals(Id.NONE, project.getDefaultContextId());
assertEquals(false, project.isArchived());
}
public void testProjectParserBasicParsingTestForCompleted() {
XmlPullParser xmlParser = Xml.newPullParser();
try {
xmlParser.setInput(new StringReader("<project>"+
"<completed-at type=\"datetime\" nil=\"true\"/>"+
"<created-at type=\"datetime\">2010-01-09T21:21:13+01:00</created-at>"+
"<default-context-id type=\"integer\" nil=\"true\"/>"+
"<default-tags nil=\"true\"/>"+
"<description nil=\"true\"/>"+
"<id type=\"integer\">4532</id>"+
"<name>Homework</name>"+
"<position type=\"integer\">1</position>"+
"<state>completed</state>"+
"<updated-at type=\"datetime\">2010-02-03T10:37:19+01:00</updated-at>"+
"</project>"));
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ProjectParser parser = CreateSUT();
Project project = parser.parseSingle(xmlParser).getResult();
Assert.assertEquals("Homework", project.getName());
assertTrue(project.getHidden());
Assert.assertEquals(Id.create(4532), project.getTracksId());
Assert.assertEquals(1265189839000l, project.getModifiedDate());
assertEquals(Id.NONE, project.getDefaultContextId());
assertEquals(false, project.isArchived());
}
public void testProjectParserBasicParsingTestForHiddenProjects() {
XmlPullParser xmlParser = Xml.newPullParser();
try {
xmlParser.setInput(new StringReader("<project>"+
"<completed-at type=\"datetime\" nil=\"true\"/>"+
"<created-at type=\"datetime\">2010-01-09T21:21:13+01:00</created-at>"+
"<default-context-id type=\"integer\" nil=\"true\"/>"+
"<default-tags nil=\"true\"/>"+
"<description nil=\"true\"/>"+
"<id type=\"integer\">4532</id>"+
"<name>Homework</name>"+
"<position type=\"integer\">1</position>"+
"<state>hidden</state>"+
"<updated-at type=\"datetime\">2010-02-03T10:37:19+01:00</updated-at>"+
"</project>"));
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ProjectParser parser = CreateSUT();
Project project = parser.parseSingle(xmlParser).getResult();
Assert.assertEquals("Homework", project.getName());
assertTrue(project.getHidden());
Assert.assertEquals(Id.create(4532), project.getTracksId());
Assert.assertEquals(1265189839000l, project.getModifiedDate());
assertEquals(Id.NONE, project.getDefaultContextId());
assertEquals(false, project.isArchived());
}
public void testProjectParserBasicParsingTestWithDefaultContext() {
XmlPullParser xmlParser = Xml.newPullParser();
try {
xmlParser.setInput(new StringReader("<project>"+
"<completed-at type=\"datetime\" nil=\"true\"/>"+
"<created-at type=\"datetime\">2010-01-09T21:21:13+01:00</created-at>"+
"<default-context-id type=\"integer\">2222</default-context-id>"+
"<default-tags nil=\"true\"/>"+
"<description nil=\"true\"/>"+
"<id type=\"integer\">4532</id>"+
"<name>Homework</name>"+
"<position type=\"integer\">1</position>"+
"<state>active</state>"+
"<updated-at type=\"datetime\">2010-02-03T10:37:19+01:00</updated-at>"+
"</project>"));
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ProjectParser parser = CreateSUT();
Project project = parser.parseSingle(xmlParser).getResult();
Assert.assertEquals("Homework", project.getName());
Assert.assertEquals(Id.create(4532), project.getTracksId());
Assert.assertEquals(1265189839000l, project.getModifiedDate());
assertEquals(Id.create(1234), project.getDefaultContextId());
assertEquals(false, project.isArchived());
}
}