package com.chalmers.feedlr.parser;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import com.chalmers.feedlr.model.TwitterItem;
import com.chalmers.feedlr.model.User;
import android.test.AndroidTestCase;
public class TwitterJSONParserTest extends AndroidTestCase {
private TwitterJSONParser parser;
private static final String START_OBJECT = "{";
private static final String END_OBJECT = "}";
private static final String START_ARRAY = "[";
private static final String END_ARRAY = "]";
private static final String SEPARATOR = ",";
protected void setUp() throws Exception {
super.setUp();
parser = new TwitterJSONParser();
}
public void testParseTweets() {
String timestampIn = "Wed Aug 29 17:12:58 +0000 2012";
// Parse timestamp
SimpleDateFormat dateFormat = new SimpleDateFormat(
"EEE MMM dd HH:mm:ss ZZZZZ yyyy", Locale.ENGLISH);
dateFormat.setLenient(false);
Date date = null;
try {
date = dateFormat.parse(timestampIn);
} catch (Exception e) {
e.printStackTrace();
}
long timestampOut = date.getTime();
String text = "Awesome text message!";
String tweetId = "2408596";
String username = "Awesome username";
String url = "http://www.google.com/img.png";
String userId = "6253282";
StringBuilder json = new StringBuilder();
json.append(START_ARRAY).append(START_OBJECT)
.append("\"created_at\":\"" + timestampIn + "\"")
.append(SEPARATOR)
.append("\"text\":\"" + text + "\"")
.append(SEPARATOR)
.append("\"id\":" + tweetId)
.append(SEPARATOR)
.append("\"user\":")
.append(START_OBJECT)
.append("\"name\":\"" + username + "\"")
.append(SEPARATOR)
.append("\"profile_image_url\":\"" + url + "\"")
.append(SEPARATOR)
.append("\"id\":" + userId)
.append(END_OBJECT)
.append(END_OBJECT).append(END_ARRAY);
String jsonString = json.toString();
List<TwitterItem> tweets = parser.parseTweets(jsonString);
assertNotNull(tweets);
TwitterItem item = tweets.get(0);
assertNotNull(item);
assertEquals("twitter", item.getUser().getSource());
assertTrue(timestampOut == item.getTimestamp());
assertEquals(text, item.getText());
assertEquals(tweetId, item.getId());
assertEquals(username, item.getUser().getUserName());
assertEquals(url, item.getUser().getProfileImageURL());
assertEquals(userId, item.getUser().getId());
}
public void testParseUserNames() {
StringBuilder json = new StringBuilder();
json.append(START_ARRAY)
.append(START_OBJECT)
.append("\"name\": \"Awesome test user\"")
.append(SEPARATOR)
.append("\"profile_image_url\":\"http://www.google.com/img.png\"")
.append(SEPARATOR).append("\"id\": 24085960")
.append(END_OBJECT).append(END_ARRAY);
String jsonString = json.toString();
List<User> users = parser.parseUserNames(jsonString);
assertNotNull(users);
}
public void testParseUserISs() {
StringBuilder json = new StringBuilder();
json.append(START_OBJECT).append("\"ids\":").append(START_ARRAY)
.append("657693,183709371,7588892,38895958,22891211")
.append(END_ARRAY).append(END_OBJECT);
String jsonString = json.toString();
String[] users = parser.parseUserIDs(jsonString);
assertNotNull(users);
}
public void parseCredentials() {
StringBuilder json = new StringBuilder();
json.append(START_OBJECT).append("\"id\": 657693").append(END_OBJECT);
String jsonString = json.toString();
long userID = 0;
userID = parser.parseCredentials(jsonString);
assert (userID != 0);
}
}