Nothing
context('Pamguard database adding functions')
test_that('Test gps adding', {
db <- system.file( 'extdata', 'PgDb.sqlite3', package='PAMmisc')
td <- tempdir()
file.copy(from = db, to = td)
tmpDb <- file.path(td, basename(db))
expect_true(file.exists(tmpDb))
tmpFile <- tempfile(fileext = '.csv')
# putting 999 Lat so its obviously fake data
gps <- data.frame(Latitude = c(999, 999, 999, 999, 999),
Longitude = c(-117, -117.1, -117.2, -117.3, -117.4),
UTC = as.POSIXct(c('2005-01-01 00:00:00', '2005-01-01 00:00:10',
'2005-01-01 00:00:20', '2005-01-01 00:00:30',
'2005-01-01 00:00:40'), tz='UTC'))
write.csv(gps, tmpFile)
addPgGps(tmpDb, tmpFile, source='csv', format='%Y-%m-%d %H:%M:%S')
addPgGps(tmpDb, tmpFile, source='csv', format='%Y-%m-%d %H:%M:%S', tz='Etc/GMT-1')
expect_error(addPgGps(tmpDb, tmpFile, source='csv', format='%Y-%m-%d %H:%M:%S', tz='DNE'),
'Timezone not recognized')
unlink(tmpFile)
# test adding gpx
gpxFile <- system.file('extdata', 'GPX.gpx', package='PAMmisc')
gpxData <- readGPXTrack(gpxFile)
addPgGps(tmpDb, gpxFile, source='SPOTgpx')
con <- dbConnect(tmpDb, drv=SQLite())
fromDb <- dbReadTable(con, 'gpsData')
# test db has 200 rows of GPS, 201 on should be our new stuff
fromDb <- fromDb[201:nrow(fromDb), ]
fromDb$UTC <- as.POSIXct(fromDb$UTC, format = '%Y-%m-%d %H:%M:%S', tz='UTC')
# check CSV stuff
expect_identical(gps$Latitude, fromDb$Latitude[1:5])
expect_identical(fromDb$UTC[1:5], fromDb$UTC[6:10] + 60*60)
expect_identical(gps$Longitude, fromDb$Longitude[1:5])
expect_identical(gps$UTC, fromDb$UTC[1:5])
# check GPX stuff
expect_identical(gpxData$UTC, fromDb$UTC[11:nrow(fromDb)])
expect_identical(gpxData$Latitude, fromDb$Latitude[11:nrow(fromDb)])
expect_error(addPgGps(db='DNE'))
# clean up test rows
del <- dbSendQuery(con,
'DELETE FROM gpsData WHERE Id > 200'
)
dbClearResult(del)
dbDisconnect(con)
unlink(tmpDb)
expect_true(!file.exists(tmpDb))
expect_true(!file.exists(tmpFile))
})
test_that('Test event adding', {
db <- system.file( 'extdata', 'PgDb.sqlite3', package='PAMmisc')
td <- tempdir()
file.copy(from = db, to = td)
tmpDb <- file.path(td, basename(db))
expect_true(file.exists(tmpDb))
bin <- system.file('extdata', 'Click.pgdf', package='PAMmisc')
hm <- loadPamguardBinaryFile(bin)
uids <- c(4000001, 4000002, 4000004)
addPgEvent(db = tmpDb, UIDs = uids, binary = bin, eventType = 'MyNewEvent', type='click')
addPgEvent(db = tmpDb, UIDs = uids, binary = bin, eventType = 'MyNewEvent', type='click')
now <- format(nowUTC(), '%Y-%m-%d %H:%M:%S')
addPgEvent(db = tmpDb, eventType='BlankEvent', type='click', start=now, end=now)
con <- dbConnect(tmpDb, drv=SQLite())
ev <- dbReadTable(con, 'Click_Detector_OfflineEvents')
expect_equal(nrow(ev), 2)
click <- dbReadTable(con, 'Click_Detector_OfflineClicks')
lookup <- dbReadTable(con, 'Lookup')
# test matching data got added
expect_true(all(c('MyNewEvent', 'BlankEvent') %in% lookup$Code))
expect_equal(click$UID, uids)
expect_equal(ev$UID[1], unique(click$parentUID))
expect_equal(ev$nClicks, c(nrow(click), 0))
expect_equal(ev$eventType, c('MyNewEvent', 'BlankEvent'))
expect_equal(ev$EventEnd, c(click$UTC[3], now))
expect_error(addPgEvent(db='DNE'))
# clean up test rows
del <- dbSendQuery(con, 'DELETE FROM Click_Detector_OfflineEvents')
dbClearResult(del)
del <- dbSendQuery(con, 'DELETE FROM Click_Detector_OfflineClicks')
dbClearResult(del)
del <- dbSendQuery(con, "DELETE FROM Lookup WHERE Code = 'MyNewEvent'")
dbClearResult(del)
dbDisconnect(con)
# Add DG style
addPgEvent(db = tmpDb, UIDs = uids, binary = bin, eventType = 'MyNewEventDG', type='dg', comment='DG')
addPgEvent(db = tmpDb, UIDs = uids, binary = bin, eventType = 'MyNewEventDG', type='dg')
addPgEvent(db = tmpDb, eventType = 'BlankDG', type='dg', start=now, end=now)
con <- dbConnect(tmpDb, drv=SQLite())
ev <- dbReadTable(con, 'Detection_Grouper')
expect_equal(nrow(ev), 2)
click <- dbReadTable(con, 'Detection_Grouper_Children')
lookup <- dbReadTable(con, 'Lookup')
# test matching data got added
expect_true('MyNewEventDG' %in% lookup$Code)
expect_equal(click$UID, uids)
expect_equal(ev$UID[1], unique(click$parentUID))
expect_equal(ev$DataCount, c(nrow(click), 0))
expect_equal(ev$eventType, c('MyNewEventDG', 'BlankDG'))
expect_equal(ev$EndTime, c(click$UTC[3], now))
expect_equal(ev$Text_Annotation, c('DG', paste0('Created by PAMmisc v', packageVersion('PAMmisc'))))
# clean up test rows
del <- dbSendQuery(con, 'DELETE FROM Detection_Grouper')
dbClearResult(del)
del <- dbSendQuery(con, 'DELETE FROM Detection_Grouper_Children')
dbClearResult(del)
del <- dbSendQuery(con, "DELETE FROM Lookup WHERE Code = 'MyNewEventDG'")
dbClearResult(del)
dbDisconnect(con)
unlink(tmpDb)
expect_true(!file.exists(tmpDb))
})
test_that('Test update UID', {
db <- system.file('extdata', 'ExBadUID.sqlite3', package='PAMmisc')
td <- tempdir()
file.copy(from = db, to = td)
tmpDb <- file.path(td, basename(db))
expect_true(file.exists(tmpDb))
goodUIDs <- c(8000003, 529000024, 529000026, 386000022, 529000027)
bin <- system.file('extdata', 'Binaries', package='PAMmisc')
nUpd <- updateUID(tmpDb, bin, verbose=FALSE, progress=FALSE)
expect_equal(nUpd$nAdded[[1]], 5)
con <- dbConnect(tmpDb, drv=SQLite())
det <- dbReadTable(con, 'Click_Detector_OfflineClicks')
expect_equal(det$newUID[1:5], goodUIDs)
expect_equal(det$newUID[6:26], det$UID[6:26])
dbDisconnect(con)
unlink(tmpDb)
expect_true(!file.exists(tmpDb))
})
test_that('Test spectrogram annotation', {
db <- system.file('extdata', 'PgDb.sqlite3', package='PAMmisc')
td <- tempdir()
file.copy(from = db, to = td)
tmpDb <- file.path(td, basename(db))
expect_true(file.exists(tmpDb))
readAnno <- readSpecAnno(tmpDb, 'Spectrogram_Annotation')
expect_equal(nrow(readAnno), 3)
addAnno <- addPgAnno(tmpDb, readAnno, tableName='Spectrogram_Annotation', source='pammisc')
expect_equal(nrow(addAnno), 0)
newAnno <- data.frame(UTC='2020/10/23 12:11:10', Duration=.5, f1=2300, f2=3600)
addAnno <- addPgAnno(tmpDb, newAnno, tableName='Spectrogram_Annotation', source='manual')
expect_equal(nrow(addAnno), 1)
addAnno <- addPgAnno(tmpDb, newAnno, tableName='Spectrogram_Annotation', source='manual')
expect_equal(nrow(addAnno), 0)
unlink(tmpDb)
expect_true(!file.exists(tmpDb))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.