tests/testthat/test_eotsfilter.R

# test_eotsfilter.R


#library(testthat)
#source("/home/alber/Documents/ghProjects/eotsfilter/R/eotsfilter.R")


################################################################################
# fill
################################################################################
asample <- '{"id":"123e4567-e89b-12d3-a456-426655440000","lat":-9.75012,"lon":-57.25692,"label":"sugar cane","timeline":["2000-02-18","2000-03-05","2000-03-21","2000-04-06","2000-04-22","2000-05-08","2000-05-24","2000-06-09","2000-06-25","2000-07-11","2000-07-27","2000-08-12","2000-08-28"],"validdata":[1,1,1,1,1,0,0,1,1,1,1,1,0],"attributes":[{"attribute":"ndvi","values":[4247,5420,7376,7890,8995,8968,8948,8928,8998,8935,8710,8846,8756]},{"attribute":"evi","values":[4549,3895,7290,5158,5273,4991,5326,5362,5198,5701,5174,5563,5356]}]}'
asample <- jsonlite::fromJSON(asample)
ares <- '{"id":["123e4567-e89b-12d3-a456-426655440000"],"lat":[-9.7501],"lon":[-57.2569],"label":["sugar cane"],"timeline":["2000-02-18","2000-03-05","2000-03-21","2000-04-06","2000-04-22","2000-05-08","2000-05-24","2000-06-09","2000-06-25","2000-07-11","2000-07-27","2000-08-12","2000-08-28"],"validdata":[1,1,1,1,1,0,0,1,1,1,1,1,0],"attributes":[{"attribute":"ndvi-fill_-1","values":[4247,5420,7376,7890,8995,8995,8995,8928,8998,8935,8710,8846,8846]},{"attribute":"evi-fill_-1","values":[4549,3895,7290,5158,5273,5273,5273,5362,5198,5701,5174,5563,5563]}]}'
ares <- jsonlite::fromJSON(ares)
expect_equal(ares$attributes$values[[1]], fill(1, asample)$attributes$values[[1]])
################################################################################
# whitaker1
################################################################################
# test error when NAs
asample <- '{"id":"123e4567-e89b-12d3-a456-426655440000","lat":-9.75012,"lon":-57.25692,"label":"sugar cane","timeline":["2000-02-18","2000-03-05","2000-03-21","2000-04-06","2000-04-22","2000-05-08","2000-05-24","2000-06-09","2000-06-25","2000-07-11","2000-07-27","2000-08-12","2000-08-28"],"validdata":[1,1,1,1,1,0,0,1,1,1,1,1,0],"attributes":[{"attribute":"ndvi","values":[4247,5420,7376,7890,8995,8968,8948,8928,8998,8935,8710,8846,8756]},{"attribute":"evi","values":[4549,3895,7290,5158,5273,4991,5326,5362,5198,5701,5174,5563,5356]}]}'
asample <- jsonlite::fromJSON(asample)
expect_error(whitaker1(lambda = 100, sample = asample))

# test correct use
asample <- '{"id":"123e4567-e89b-12d3-a456-426655440000","lat":-9,"lon":-57,"label":"sugar cane","timeline":["2000-02-18","2000-03-05","2000-03-21","2000-04-06","2000-04-22","2000-05-08","2000-05-24","2000-06-09","2000-06-25","2000-07-11","2000-07-27","2000-08-12","2000-08-28"],"validdata":[1,1,1,1,1,1,1,1,1,1,1,1,1],"attributes":[{"attribute":"ndvi","values":[4247,5420,7376,7890,8995,8968,8948,8928,8998,8935,8710,8846,8756]},{"attribute":"evi","values":[4549,3895,7290,5158,5273,4991,5326,5362,5198,5701,5174,5563,5356]}]}'
asample <- jsonlite::fromJSON(asample)
ares <- '{\"id\":[\"123e4567-e89b-12d3-a456-426655440000\"],\"lat\":[-9],\"lon\":[-57],\"label\":[\"sugar cane\"],\"timeline\":[\"2000-02-18\",\"2000-03-05\",\"2000-03-21\",\"2000-04-06\",\"2000-04-22\",\"2000-05-08\",\"2000-05-24\",\"2000-06-09\",\"2000-06-25\",\"2000-07-11\",\"2000-07-27\",\"2000-08-12\",\"2000-08-28\"],\"validdata\":[1,1,1,1,1,1,1,1,1,1,1,1,1],\"attributes\":[{\"attribute\":\"ndvi-whitaker1\",\"values\":[7797.6691,7833.1758,7892.8142,7957.6208,8023.1036,8078.8674,8125.7399,8164.3898,8195.4037,8218.3915,8234.2133,8245.2771,8250.3338]},{\"attribute\":\"evi-whitaker1\",\"values\":[5258.3536,5265.4471,5286.2451,5287.0056,5289.0561,5291.2671,5296.4809,5301.3994,5305.712,5311.1017,5312.5923,5315.4689,5315.8702]}]}'
ares <- jsonlite::fromJSON(ares)
expect_equal(whitaker1(lambda = 100, sample = asample), ares)
################################################################################
# whitaker2
################################################################################
# test error when NAs
asample <- '{"id":"123e4567-e89b-12d3-a456-426655440000","lat":-9.75012,"lon":-57.25692,"label":"sugar cane","timeline":["2000-02-18","2000-03-05","2000-03-21","2000-04-06","2000-04-22","2000-05-08","2000-05-24","2000-06-09","2000-06-25","2000-07-11","2000-07-27","2000-08-12","2000-08-28"],"validdata":[1,1,1,1,1,0,0,1,1,1,1,1,0],"attributes":[{"attribute":"ndvi","values":[4247,5420,7376,7890,8995,8968,8948,8928,8998,8935,8710,8846,8756]},{"attribute":"evi","values":[4549,3895,7290,5158,5273,4991,5326,5362,5198,5701,5174,5563,5356]}]}'
asample <- jsonlite::fromJSON(asample)
expect_error(whitaker2(lambda = 100, sample = asample))

# test correct use
asample <- '{"id":"123e4567-e89b-12d3-a456-426655440000","lat":-9,"lon":-57,"label":"sugar cane","timeline":["2000-02-18","2000-03-05","2000-03-21","2000-04-06","2000-04-22","2000-05-08","2000-05-24","2000-06-09","2000-06-25","2000-07-11","2000-07-27","2000-08-12","2000-08-28"],"validdata":[1,1,1,1,1,1,1,1,1,1,1,1,1],"attributes":[{"attribute":"ndvi","values":[4247,5420,7376,7890,8995,8968,8948,8928,8998,8935,8710,8846,8756]},{"attribute":"evi","values":[4549,3895,7290,5158,5273,4991,5326,5362,5198,5701,5174,5563,5356]}]}'
asample <- jsonlite::fromJSON(asample)
ares <- '{"id":["123e4567-e89b-12d3-a456-426655440000"],"lat":[-9],"lon":[-57],"label":["sugar cane"],"timeline":["2000-02-18","2000-03-05","2000-03-21","2000-04-06","2000-04-22","2000-05-08","2000-05-24","2000-06-09","2000-06-25","2000-07-11","2000-07-27","2000-08-12","2000-08-28"],"validdata":[1,1,1,1,1,1,1,1,1,1,1,1,1],"attributes":[{"attribute":"ndvi-whitaker2","values":[5757.0685,6313.9694,6855.7696,7358.4288,7803.1087,8176.2872,8476.3608,8709.643,8887.1641,9022.1376,9128.8855,9220.8585,9307.3182]},{"attribute":"evi-whitaker2","values":[4985.6521,5074.1222,5158.2258,5221.8051,5270.0201,5307.3928,5338.475,5364.6544,5387.1941,5407.3306,5424.4086,5440.7093,5456.0099]}]} '
ares <- jsonlite::fromJSON(ares)
expect_equal(whitaker2(lambda = 100, sample = asample), ares)
################################################################################
# fourier
################################################################################
# test error when NAs
asample <- '{"id":"123e4567-e89b-12d3-a456-426655440000","lat":-9.75012,"lon":-57.25692,"label":"sugar cane","timeline":["2000-02-18","2000-03-05","2000-03-21","2000-04-06","2000-04-22","2000-05-08","2000-05-24","2000-06-09","2000-06-25","2000-07-11","2000-07-27","2000-08-12","2000-08-28"],"validdata":[1,1,1,1,1,0,0,1,1,1,1,1,0],"attributes":[{"attribute":"ndvi","values":[4247,5420,7376,7890,8995,8968,8948,8928,8998,8935,8710,8846,8756]},{"attribute":"evi","values":[4549,3895,7290,5158,5273,4991,5326,5362,5198,5701,5174,5563,5356]}]}'
asample <- jsonlite::fromJSON(asample)
expect_error(fourier(nfreq = 10, sample = asample))

# test correct results
asample <- '{"id":"123e4567-e89b-12d3-a456-426655440000","lat":-9,"lon":-57,"label":"sugar cane","timeline":["2000-02-18","2000-03-05","2000-03-21","2000-04-06","2000-04-22","2000-05-08","2000-05-24","2000-06-09","2000-06-25","2000-07-11","2000-07-27","2000-08-12","2000-08-28"],"validdata":[1,1,1,1,1,1,1,1,1,1,1,1,1],"attributes":[{"attribute":"ndvi","values":[4247,5420,7376,7890,8995,8968,8948,8928,8998,8935,8710,8846,8756]},{"attribute":"evi","values":[4549,3895,7290,5158,5273,4991,5326,5362,5198,5701,5174,5563,5356]}]}'
asample <- jsonlite::fromJSON(asample)
ares <- '{"id":["123e4567-e89b-12d3-a456-426655440000"],"lat":[-9],"lon":[-57],"label":["sugar cane"],"timeline":["2000-02-18","2000-03-05","2000-03-21","2000-04-06","2000-04-22","2000-05-08","2000-05-24","2000-06-09","2000-06-25","2000-07-11","2000-07-27","2000-08-12","2000-08-28"],"validdata":[1,1,1,1,1,1,1,1,1,1,1,1,1],"attributes":[{"attribute":"ndvi-fourier","values":[5130.5174,6025.1878,7336.6204,7337.3745,8330.2836,8411.7626,8493.4408,8594.9242,8871.2896,8994.1004,8871.6715,9186.101,9433.7262]},{"attribute":"evi-fourier","values":[4947.9636,3967.2576,6889.4237,4766.2588,5291.1737,5202.2881,5347.7575,5251.3099,5221.5464,5796.929,5113.5496,5473.904,5566.6381]}]}'
ares <- jsonlite::fromJSON(ares)
fres <- fourier(nfreq = 10, sample = asample)$attributes$values
expect_true(all(abs(fres[[1]] - ares$attributes$values[[1]]) < 0.0001))
expect_true(all(abs(fres[[2]] - ares$attributes$values[[2]]) < 0.0001))
################################################################################
# double logistic
################################################################################
asample <- '{"id":"123e4567-e89b-12d3-a456-426655440000","lat":-9.75012,"lon":-57.25692,"label":"sugar cane","timeline":["2000-02-18","2000-03-05","2000-03-21","2000-04-06","2000-04-22","2000-05-08","2000-05-24","2000-06-09","2000-06-25","2000-07-11","2000-07-27","2000-08-12","2000-08-28"],"validdata":[1,1,1,1,1,0,0,1,1,1,1,1,0],"attributes":[{"attribute":"ndvi","values":[4247,5420,7376,7890,8995,8968,8948,8928,8998,8935,8710,8846,8756]},{"attribute":"evi","values":[4549,3895,7290,5158,5273,4991,5326,5362,5198,5701,5174,5563,5356]}]}'
asample <- jsonlite::fromJSON(asample)
expect_error(doublelogistic(sample = asample))

# test any result
asample <- '{"id":"123e4567-e89b-12d3-a456-426655440000","lat":-9,"lon":-57,"label":"sugar cane","timeline":["2000-02-18","2000-03-05","2000-03-21","2000-04-06","2000-04-22","2000-05-08","2000-05-24","2000-06-09","2000-06-25","2000-07-11","2000-07-27","2000-08-12","2000-08-28"],"validdata":[1,1,1,1,1,1,1,1,1,1,1,1,1],"attributes":[{"attribute":"ndvi","values":[4247,5420,7376,7890,8995,8968,8948,8928,8998,8935,8710,8846,8756]},{"attribute":"evi","values":[4549,3895,7290,5158,5273,4991,5326,5362,5198,5701,5174,5563,5356]}]}'
asample <- jsonlite::fromJSON(asample)
ares <- '{"id":["123e4567-e89b-12d3-a456-426655440000"],"lat":[-9],"lon":[-57],"label":["sugar cane"],"timeline":["2000-02-18","2000-03-05","2000-03-21","2000-04-06","2000-04-22","2000-05-08","2000-05-24","2000-06-09","2000-06-25","2000-07-11","2000-07-27","2000-08-12","2000-08-28"],"validdata":[1,1,1,1,1,1,1,1,1,1,1,1,1],"attributes":[{"attribute":"ndvi-dlog","values":[6233.25,6233.25,6233.25,6233.25,8898.2222,8898.2222,8898.2222,8898.2222,8898.2222,8898.2222,8898.2222,8898.2222,8898.2222]},{"attribute":"evi-dlog","values":[5282.2496,5282.2496,5282.2496,5282.2496,5282.2496,5315.6,5315.6,5315.6,5315.6,5315.6,5282.2496,5282.2496,5282.2496]}]}'
ares <- jsonlite::fromJSON(ares)
expect_equal(ares, doublelogistic(sample = asample))
albhasan/eotsfilter documentation built on May 11, 2019, 10:30 p.m.