com.appsimobile.appsii.module.weather.loader.WeatherDataParserTest.java Source code

Java tutorial

Introduction

Here is the source code for com.appsimobile.appsii.module.weather.loader.WeatherDataParserTest.java

Source

/*
 *
 *  * 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);
            }
        }

    }

}