/* * * * Copyright 2015. Appsi Mobile * * * * Licensed under the Apache License, Version 2.0 (the "License"); * * you may not use this file except in compliance with the License. * * You may obtain a copy of the License at * * * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS, * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * * limitations under the License. * */ package com.appsimobile.appsii.module.weather.loader; import android.content.res.AssetManager; import android.support.v4.util.CircularArray; import android.test.AndroidTestCase; import com.appsimobile.appsii.AssetUtils; import com.appsimobile.appsii.ResponseParserException; import com.appsimobile.util.ArrayUtils; import org.json.JSONException; import java.text.ParseException; /** * Created by nick on 21/01/15. */ public class WeatherDataParserTest extends AndroidTestCase { public void testWeatherParser_multipleResults() throws ParseException, ResponseParserException, JSONException { AssetManager manager = getContext().getAssets(); String json = AssetUtils.readAssetToString(manager, "weather.json", new StringBuilder()); CircularArray<WeatherData> result = new CircularArray<>(); WeatherDataParser.parseWeatherData(result, json, ArrayUtils.asArray("1", "2", "3")); assertEquals(3, result.size()); { WeatherData data1 = result.get(0); assertEquals("Breda", data1.location); assertEquals(34, data1.windChill); assertEquals(80, data1.windDirection); assertEquals(3.0f, data1.windSpeed); assertEquals(81, data1.atmosphereHumidity); assertEquals(29.85f, data1.atmospherePressure); assertEquals(0, data1.atmosphereRising); assertEquals(6.21f, data1.atmosphereVisible); assertEquals("8:34 am", data1.sunrise); assertEquals("5:11 pm", data1.sunset); assertEquals(26, data1.nowConditionCode); assertEquals(34, data1.nowTemperature); assertEquals("Cloudy", data1.nowConditionText); assertEquals("1", data1.woeid); assertEquals(5, data1.forecasts.size()); { WeatherData.Forecast fc = data1.forecasts.get(0); assertEquals(2457044, fc.julianDay); assertEquals(36, fc.high); assertEquals(28, fc.low); assertEquals(29, fc.conditionCode); assertEquals("Partly Cloudy", fc.forecastText); } } } public void testWeatherParser_singleResult() throws ParseException, ResponseParserException, JSONException { AssetManager manager = getContext().getAssets(); String json = AssetUtils.readAssetToString(manager, "weather1.json", new StringBuilder()); CircularArray<WeatherData> result = new CircularArray<>(); WeatherDataParser.parseWeatherData(result, json, ArrayUtils.asArray("1")); assertEquals(1, result.size()); { WeatherData data1 = result.get(0); assertEquals("Etten-Leur", data1.location); assertEquals(-6, data1.windChill); assertEquals(70, data1.windDirection); assertEquals(14.48f, data1.windSpeed); assertEquals(83, data1.atmosphereHumidity); assertEquals(1015.92f, data1.atmospherePressure); assertEquals(0, data1.atmosphereRising); assertEquals(5f, data1.atmosphereVisible); assertEquals("8:32 am", data1.sunrise); assertEquals("5:13 pm", data1.sunset); assertEquals(26, data1.nowConditionCode); assertEquals(-1, data1.nowTemperature); assertEquals("Cloudy", data1.nowConditionText); assertEquals("1", data1.woeid); assertEquals(5, data1.forecasts.size()); { WeatherData.Forecast fc = data1.forecasts.get(0); assertEquals(2457045, fc.julianDay); assertEquals(1, fc.high); assertEquals(-2, fc.low); assertEquals(29, fc.conditionCode); assertEquals("Partly Cloudy", fc.forecastText); } } } public void testWeatherParserWithError() throws ParseException, ResponseParserException, JSONException { AssetManager manager = getContext().getAssets(); String json = AssetUtils.readAssetToString(manager, "weather_with_error.json", new StringBuilder()); CircularArray<WeatherData> result = new CircularArray<>(); WeatherDataParser.parseWeatherData(result, json, ArrayUtils.asArray("a", "b")); assertEquals(1, result.size()); { WeatherData data1 = result.get(0); assertEquals("Etten-Leur", data1.location); assertEquals(24, data1.windChill); assertEquals(60, data1.windDirection); assertEquals(6.0f, data1.windSpeed); assertEquals(91, data1.atmosphereHumidity); assertEquals(29.85f, data1.atmospherePressure); assertEquals(0, data1.atmosphereRising); assertEquals(3.73f, data1.atmosphereVisible); assertEquals("8:34 am", data1.sunrise); assertEquals("5:11 pm", data1.sunset); assertEquals(26, data1.nowConditionCode); assertEquals(30, data1.nowTemperature); assertEquals("Cloudy", data1.nowConditionText); assertEquals("b", data1.woeid); assertEquals(5, data1.forecasts.size()); { WeatherData.Forecast fc = data1.forecasts.get(0); assertEquals(2457044, fc.julianDay); assertEquals(35, fc.high); assertEquals(27, fc.low); assertEquals(29, fc.conditionCode); assertEquals("Partly Cloudy", fc.forecastText); } } } }