1d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru/* 2d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Copyright (C) 2011 The Android Open Source Project 3d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * 4d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Licensed under the Apache License, Version 2.0 (the "License"); 5d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * you may not use this file except in compliance with the License. 6d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * You may obtain a copy of the License at 7d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * 8d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * http://www.apache.org/licenses/LICENSE-2.0 9d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * 10d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Unless required by applicable law or agreed to in writing, software 11d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * distributed under the License is distributed on an "AS IS" BASIS, 12d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * See the License for the specific language governing permissions and 14d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * limitations under the License. 15d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru */ 16d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 17d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Querupackage com.android.volley; 18d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 19d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport com.android.volley.Request.Priority; 20b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport org.junit.Test; 21b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport org.junit.runner.RunWith; 22b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport org.robolectric.RobolectricTestRunner; 23d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 24b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickimport static org.junit.Assert.*; 25d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 26b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrick@RunWith(RobolectricTestRunner.class) 27b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrickpublic class RequestTest { 28b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrick 29b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrick @Test public void compareTo() { 30d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru int sequence = 0; 31d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru TestRequest low = new TestRequest(Priority.LOW); 32d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru low.setSequence(sequence++); 33d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru TestRequest low2 = new TestRequest(Priority.LOW); 34d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru low2.setSequence(sequence++); 35d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru TestRequest high = new TestRequest(Priority.HIGH); 36d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru high.setSequence(sequence++); 37d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru TestRequest immediate = new TestRequest(Priority.IMMEDIATE); 38d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru immediate.setSequence(sequence++); 39d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 40d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru // "Low" should sort higher because it's really processing order. 41d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru assertTrue(low.compareTo(high) > 0); 42d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru assertTrue(high.compareTo(low) < 0); 43d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru assertTrue(low.compareTo(low2) < 0); 44d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru assertTrue(low.compareTo(immediate) > 0); 45d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru assertTrue(immediate.compareTo(high) < 0); 46d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 47d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 48d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru private class TestRequest extends Request<Object> { 49d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru private Priority mPriority = Priority.NORMAL; 50d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru public TestRequest(Priority priority) { 5135d5cc345a7bc5c7391aeda3d3fce711c6376c7bFicus Kirkpatrick super(Request.Method.GET, "", null); 52d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru mPriority = priority; 53d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 54d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 55d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru @Override 56d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru public Priority getPriority() { 57d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru return mPriority; 58d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 59d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 60d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru @Override 61d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru protected void deliverResponse(Object response) { 62d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 63d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 64d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru @Override 65d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru protected Response<Object> parseNetworkResponse(NetworkResponse response) { 66d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru return null; 67d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 68d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 690ec9297ffdf80183d17ca61759ecc18eae9f8167kang 70b9b8dc3d98fb1a8c3f02c2c2fcc18cbd344c05cbFicus Kirkpatrick @Test public void urlParsing() { 710ec9297ffdf80183d17ca61759ecc18eae9f8167kang UrlParseRequest nullUrl = new UrlParseRequest(null); 720ec9297ffdf80183d17ca61759ecc18eae9f8167kang assertEquals(0, nullUrl.getTrafficStatsTag()); 730ec9297ffdf80183d17ca61759ecc18eae9f8167kang UrlParseRequest emptyUrl = new UrlParseRequest(""); 740ec9297ffdf80183d17ca61759ecc18eae9f8167kang assertEquals(0, emptyUrl.getTrafficStatsTag()); 750ec9297ffdf80183d17ca61759ecc18eae9f8167kang UrlParseRequest noHost = new UrlParseRequest("http:///"); 760ec9297ffdf80183d17ca61759ecc18eae9f8167kang assertEquals(0, noHost.getTrafficStatsTag()); 770ec9297ffdf80183d17ca61759ecc18eae9f8167kang UrlParseRequest badProtocol = new UrlParseRequest("bad:http://foo"); 780ec9297ffdf80183d17ca61759ecc18eae9f8167kang assertEquals(0, badProtocol.getTrafficStatsTag()); 790ec9297ffdf80183d17ca61759ecc18eae9f8167kang UrlParseRequest goodProtocol = new UrlParseRequest("http://foo"); 800ec9297ffdf80183d17ca61759ecc18eae9f8167kang assertFalse(0 == goodProtocol.getTrafficStatsTag()); 810ec9297ffdf80183d17ca61759ecc18eae9f8167kang } 820ec9297ffdf80183d17ca61759ecc18eae9f8167kang 830ec9297ffdf80183d17ca61759ecc18eae9f8167kang private class UrlParseRequest extends Request<Object> { 840ec9297ffdf80183d17ca61759ecc18eae9f8167kang public UrlParseRequest(String url) { 850ec9297ffdf80183d17ca61759ecc18eae9f8167kang super(Request.Method.GET, url, null); 860ec9297ffdf80183d17ca61759ecc18eae9f8167kang } 870ec9297ffdf80183d17ca61759ecc18eae9f8167kang 880ec9297ffdf80183d17ca61759ecc18eae9f8167kang @Override 890ec9297ffdf80183d17ca61759ecc18eae9f8167kang protected void deliverResponse(Object response) { 900ec9297ffdf80183d17ca61759ecc18eae9f8167kang } 910ec9297ffdf80183d17ca61759ecc18eae9f8167kang 920ec9297ffdf80183d17ca61759ecc18eae9f8167kang @Override 930ec9297ffdf80183d17ca61759ecc18eae9f8167kang protected Response<Object> parseNetworkResponse(NetworkResponse response) { 940ec9297ffdf80183d17ca61759ecc18eae9f8167kang return null; 950ec9297ffdf80183d17ca61759ecc18eae9f8167kang } 960ec9297ffdf80183d17ca61759ecc18eae9f8167kang } 97d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru} 98