%%%------------------------------------------------------------------- %%% @author Arkadiusz %%% @copyright (C) 2021, %%% @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()) .