package com.samknows.libcore;
import android.app.Activity;
import com.samknows.libcore.SKOperators.ISKQueryCompleted;
import com.samknows.libcore.SKOperators.SKOperators_Return;
import com.samknows.libcore.SKOperators.SKThrottledQueryResult;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
@RunWith(RobolectricTestRunner.class)
public class SKOperatorsTests {
public SKOperatorsTests() {
// TODO Auto-generated constructor stub
}
@Test
public void testSingleton() throws Exception{
// Create a dummy Context!
// http://robolectric.org/activity-lifecycle.html
Activity activity = Robolectric.buildActivity(Activity.class).create().get();
SKOperators operator = SKOperators.getInstance(activity);
SKOperators operator2 = SKOperators.getInstance(activity);
assertTrue(operator != null);
assertTrue(operator == operator2);
}
@Test
public void testThrottledQueryResultConstructor() throws Exception{
// Create a dummy Context!
// http://robolectric.org/activity-lifecycle.html
Activity activity = Robolectric.buildActivity(Activity.class).create().get();
SKOperators operator = SKOperators.getInstance(activity);
SKThrottledQueryResult result = operator.new SKThrottledQueryResult();
assertTrue(result.returnCode == SKOperators_Return.SKOperators_Return_NoThrottleQuery);
assertTrue(result.timestamp != null);
assertTrue(result.datetimeUTCSimple != null);
assertTrue(result.datetimeUTCSimple.length() > 0);
assertTrue(result.carrier.equals(""));
}
@Test
public void testThrottleQuery() throws Exception {
// So far as we can, test that the query operation works as expected.
// It really would be a lot of work to try to fully mock this out, as that would require
// several layers of mocking; because the query is actually run asynchronously!
// Create a dummy Context!
// http://robolectric.org/activity-lifecycle.html
Activity activity = Robolectric.buildActivity(Activity.class).create().get();
SKOperators operators = SKOperators.getInstance(activity);
SKThrottledQueryResult result = operators.fireThrottledWebServiceQueryWithCallback(new ISKQueryCompleted() {
@Override
public void onQueryCompleted(Exception e, long responseCode,
String responseDataAsString) {
// In practise, this is never actually reached; as the call is asynchronous!
assertTrue(e == null);
assertTrue(responseCode == 0);
assertTrue(responseDataAsString != null);
assertTrue(responseDataAsString.length() > 0);
}
});
assertTrue(result.returnCode == SKOperators_Return.SKOperators_Return_NoThrottleQuery);
assertTrue(result.timestamp != null);
assertTrue(result.datetimeUTCSimple != null);
assertTrue(result.datetimeUTCSimple.length() > 0);
assertTrue(result.carrier.equals(""));
}
}