Current section
Files
Jump to
Current section
Files
lib/pollution_gen_server_test.erl
%%%-------------------------------------------------------------------
%%% @author Arkadiusz
%%% @copyright (C) 2021, <COMPANY>
%%% @doc
%%%
%%% @end
%%% Created : 10. maj 2021 13:51
%%%-------------------------------------------------------------------
-module(pollution_gen_server_test).
-author("Arkadiusz").
-include_lib("eunit/include/eunit.hrl").
-compile(export_all).
startServer_test() ->
{Msg, _} = pollution_supervisor:start_link(),
?assertEqual(ok, Msg)
.
addStation_test() ->
?assertEqual(ok, pollution_gen_server:addStation("krk", {1,1}))
.
addSameStationNameTwice_test() ->
?assertEqual(ok, pollution_gen_server:addStation("wwa", {2,2})),
?assertEqual(error, pollution_gen_server:addStation("wwa", {1,1}))
.
addSameCoordinatesTwice_test() ->
?assertEqual(ok, pollution_gen_server:addStation("lodz", {3,3})),
?assertEqual(error, pollution_gen_server:addStation("gdansk", {3,3}))
.
addValueUsingStationName_test() ->
Date = calendar:local_time(),
?assertEqual(ok, pollution_gen_server:addStation("elk", {4,4})),
?assertEqual(ok, pollution_gen_server:addValue("elk", Date, "PM10", 80))
.
addValueUsingStationCoordinates_test() ->
Date = calendar:local_time(),
?assertEqual(ok, pollution_gen_server:addStation("helm", {4,5})),
?assertEqual(ok, pollution_gen_server:addValue({4,5}, Date, "PM10", 80))
.
addSameValuesTwice_test() ->
Date = calendar:local_time(),
?assertEqual(ok, pollution_gen_server:addStation("szczecin", {5,5})),
?assertEqual(ok, pollution_gen_server:addValue("szczecin", Date, "PM10", 80)),
?assertEqual(error, pollution_gen_server:addValue("szczecin", Date, "PM10", 80))
.
removeValueUsingStationName_test() ->
Date = calendar:local_time(),
?assertEqual(ok, pollution_gen_server:addStation("wroclaw", {6,6})),
?assertEqual(ok, pollution_gen_server:addValue("wroclaw", Date, "PM10", 80)),
?assertEqual(ok, pollution_gen_server:removeValue("wroclaw", Date, "PM10"))
.
removeValueUsingStationCoordinates_test() ->
Date = calendar:local_time(),
?assertEqual(ok, pollution_gen_server:addStation("brzesko", {7,7})),
?assertEqual(ok, pollution_gen_server:addValue({7,7}, Date, "PM10", 80)),
?assertEqual(ok, pollution_gen_server:removeValue({7,7}, Date, "PM10"))
.
removeSameValueTwice_test() ->
Date = calendar:local_time(),
?assertEqual(ok, pollution_gen_server:addStation("gdynia", {8,8})),
?assertEqual(ok, pollution_gen_server:addValue("gdynia", Date, "PM10", 80)),
?assertEqual(ok, pollution_gen_server:removeValue("gdynia", Date, "PM10")),
?assertEqual(error, pollution_gen_server:removeValue("gdynia", Date, "PM10"))
.
addAndGetValueUsingStationName_test() ->
Date = calendar:local_time(),
?assertEqual(ok, pollution_gen_server:addStation("marlbork", {9,9})),
?assertEqual(ok, pollution_gen_server:addValue("marlbork", Date, "PM10", 80)),
?assertEqual(80, pollution_gen_server:getOneValue("marlbork", Date, "PM10"))
.
addAndGetValueUsingStationCoordinates_test() ->
Date = calendar:local_time(),
?assertEqual(ok, pollution_gen_server:addStation("marienburg", {9,10})),
?assertEqual(ok, pollution_gen_server:addValue("marienburg", Date, "PM10", 80)),
?assertEqual(80, pollution_gen_server:getOneValue({9,10}, Date, "PM10"))
.
getStationTypeMean_test() ->
Date = calendar:local_time(),
DateSeconds = calendar:datetime_to_gregorian_seconds(Date),
?assertEqual(ok, pollution_gen_server:addStation("rzeszow", {10, 10})),
?assertEqual(ok, pollution_gen_server:addValue({10,10}, calendar:gregorian_seconds_to_datetime(DateSeconds), "PM10", 60)),
?assertEqual(ok, pollution_gen_server:addValue({10,10}, calendar:gregorian_seconds_to_datetime(DateSeconds+1), "PM10", 70)),
?assertEqual(ok, pollution_gen_server:addValue({10,10}, calendar:gregorian_seconds_to_datetime(DateSeconds+2), "PM10", 80)),
?assertEqual(ok, pollution_gen_server:addValue({10,10}, calendar:gregorian_seconds_to_datetime(DateSeconds+3), "PM10", 90)),
?assertEqual(ok, pollution_gen_server:addValue({10,10}, calendar:gregorian_seconds_to_datetime(DateSeconds+4), "PM10", 100)),
?assertEqual((60+70+80+90+100)/5, pollution_gen_server:getStationMean({10,10}, "PM10"))
.
getDailyTypeMean_test() ->
Date = calendar:local_time(),
DateSeconds = calendar:datetime_to_gregorian_seconds(Date),
?assertEqual(ok, pollution_gen_server:addStation("lubin", {11, 11})),
?assertEqual(ok, pollution_gen_server:addValue({11, 11}, calendar:gregorian_seconds_to_datetime(DateSeconds), "temp", 6)),
?assertEqual(ok, pollution_gen_server:addValue({11, 11}, calendar:gregorian_seconds_to_datetime(DateSeconds+1), "temp", 7)),
?assertEqual(ok, pollution_gen_server:addValue({11, 11}, calendar:gregorian_seconds_to_datetime(DateSeconds+2), "temp", 8)),
?assertEqual(ok, pollution_gen_server:addValue({11, 11}, calendar:gregorian_seconds_to_datetime(DateSeconds+3), "temp", 9)),
?assertEqual(ok, pollution_gen_server:addValue({11, 11}, calendar:gregorian_seconds_to_datetime(DateSeconds+4), "temp", 10)),
?assertEqual((6+7+8+9+10)/5, pollution_gen_server:getDailyMean("temp", calendar:local_time()))
.
getMaxAndMinMean_test() ->
Date = calendar:local_time(),
DateSeconds = calendar:datetime_to_gregorian_seconds(Date),
?assertEqual(ok, pollution_gen_server:addStation("Prokocim", {12, 12})),
?assertEqual(ok, pollution_gen_server:addStation("Zielonki", {13, 13})),
?assertEqual(ok, pollution_gen_server:addValue({12, 12}, calendar:gregorian_seconds_to_datetime(DateSeconds), "tlen", 1)),
?assertEqual(ok, pollution_gen_server:addValue({12, 12}, calendar:gregorian_seconds_to_datetime(DateSeconds+1), "tlen", 2)),
?assertEqual(ok, pollution_gen_server:addValue({12, 12}, calendar:gregorian_seconds_to_datetime(DateSeconds+2), "tlen", 3)),
?assertEqual(ok, pollution_gen_server:addValue({12, 12}, calendar:gregorian_seconds_to_datetime(DateSeconds+3), "tlen", 4)),
?assertEqual(ok, pollution_gen_server:addValue({12, 12}, calendar:gregorian_seconds_to_datetime(DateSeconds+4), "tlen", 5)),
?assertEqual(ok, pollution_gen_server:addValue({13, 13}, calendar:gregorian_seconds_to_datetime(DateSeconds), "tlen", 6)),
?assertEqual(ok, pollution_gen_server:addValue({13, 13}, calendar:gregorian_seconds_to_datetime(DateSeconds+1), "tlen", 7)),
?assertEqual(ok, pollution_gen_server:addValue({13, 13}, calendar:gregorian_seconds_to_datetime(DateSeconds+2), "tlen", 8)),
?assertEqual(ok, pollution_gen_server:addValue({13, 13}, calendar:gregorian_seconds_to_datetime(DateSeconds+3), "tlen", 9)),
?assertEqual(ok, pollution_gen_server:addValue({13, 13}, calendar:gregorian_seconds_to_datetime(DateSeconds+4), "tlen", 10)),
?assertEqual({"Prokocim", (1+2+3+4+5)/5}, pollution_gen_server:getDailyMinMean("tlen", calendar:local_time())),
?assertEqual({"Zielonki", (6+7+8+9+10)/5}, pollution_gen_server:getDailyMaxMean("tlen", calendar:local_time()))
.
getMinimumDistanceStations_test() ->
?assertEqual(ok, pollution_gen_server:addStation("Jork", {300, 300})),
?assertEqual(ok, pollution_gen_server:addStation("Jokszajer", {310, 310})),
?assertEqual([{300,300},{310,310}], pollution_gen_server:getMinimumDistanceStations({305, 305}, 4000))
.
stopServer_test() ->
?assertEqual(ok, pollution_gen_server:stop())
.
all_test() ->
?assertEqual(ok, startServer_test()),
?assertEqual(ok, addStation_test()),
?assertEqual(ok, addSameStationNameTwice_test()),
?assertEqual(ok, addSameCoordinatesTwice_test()),
?assertEqual(ok, addValueUsingStationName_test()),
?assertEqual(ok, addValueUsingStationCoordinates_test()),
?assertEqual(ok, addSameValuesTwice_test()),
?assertEqual(ok, removeValueUsingStationName_test()),
?assertEqual(ok, removeValueUsingStationCoordinates_test()),
?assertEqual(ok, removeSameValueTwice_test()),
?assertEqual(ok, addAndGetValueUsingStationName_test()),
?assertEqual(ok, addAndGetValueUsingStationCoordinates_test()),
?assertEqual(ok, getMinimumDistanceStations_test()),
?assertEqual(ok, stopServer_test())
.