tests/testthat/test-legacy-data.R

# Test that the output of test.db is equal to test.json

rand <- function(n, chars = TRUE, numbers = TRUE, uppercase = FALSE) {
  data <- NULL

  if (!chars && !numbers) abort("Select either letters, numbers, or both.")

  if (chars) {
    if (uppercase) {
      data <- c(data, LETTERS[1:6])
    } else {
      data <- c(data, letters[1:6])
    }
  }

  if (numbers) {
    data <- c(data, 0:9)
  }

  paste(sample(data, n, TRUE), collapse = "")
}

gen_id <- function(uppercase = FALSE) {
  if (uppercase) {
    paste0(
      rand(8, uppercase = TRUE), "-", rand(4, uppercase = TRUE), "-",
      rand(4, uppercase = TRUE), "-", rand(4, uppercase = TRUE), "-",
      rand(12, uppercase = TRUE)
    )
  } else {
    paste0(rand(8), "-", rand(4), "-", rand(4), "-", rand(4), "-", rand(12))
  }
}

### db_test ============
db_test <- function(sensor, true_data) {
  path <- system.file("testdata", package = "mpathsenser")
  tempfile <- tempfile()
  db <- create_db(NULL, tempfile)
  suppressMessages(import(path, db = db, sensors = sensor, batch_size = 1, recursive = FALSE))

  data <- get_data(db, sensor, "12345", "2021-11-13", "2021-11-14") %>%
    collect()
  true <- true_data

  testthat::expect_equal(data, true)

  close_db(db)
  unlink(tempfile)
}

### Accelerometer ============
test_that("Accelerometer", {
  db_test("Accelerometer", true_data = tibble::tibble(
    measurement_id = c(
      "15d06c62-3b69-5a1d-21b1-bf82ddc573bg",
      "9da62087-feb7-cd4d-2964-f33c96587863"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("13:59:59.000", "14:00:01.000"),
    end_time = c(NA_character_, NA_character_),
    n = c(NA, 298L),
    x_mean = c(NA_real_, -0.0022081288080),
    y_mean = c(NA_real_, -0.0004500896919),
    z_mean = c(NA_real_, -0.023477349265),
    x_median = c(NA_real_, NA_real_),
    y_median = c(NA_real_, NA_real_),
    z_median = c(NA_real_, NA_real_),
    x_std = c(NA_real_, NA_real_),
    y_std = c(NA_real_, NA_real_),
    z_std = c(NA_real_, NA_real_),
    x_aad = c(NA_real_, NA_real_),
    y_aad = c(NA_real_, NA_real_),
    z_aad = c(NA_real_, NA_real_),
    x_min = c(NA_real_, NA_real_),
    y_min = c(NA_real_, NA_real_),
    z_min = c(NA_real_, NA_real_),
    x_max = c(NA_real_, NA_real_),
    y_max = c(NA_real_, NA_real_),
    z_max = c(NA_real_, NA_real_),
    x_max_min_diff = c(NA_real_, NA_real_),
    y_max_min_diff = c(NA_real_, NA_real_),
    z_max_min_diff = c(NA_real_, NA_real_),
    x_mad = c(NA_real_, NA_real_),
    y_mad = c(NA_real_, NA_real_),
    z_mad = c(NA_real_, NA_real_),
    x_iqr = c(NA_real_, NA_real_),
    y_iqr = c(NA_real_, NA_real_),
    z_iqr = c(NA_real_, NA_real_),
    x_neg_n = c(NA_real_, NA_real_),
    y_neg_n = c(NA_real_, NA_real_),
    z_neg_n = c(NA_real_, NA_real_),
    x_pos_n = c(NA_real_, NA_real_),
    y_pos_n = c(NA_real_, NA_real_),
    z_pos_n = c(NA_real_, NA_real_),
    x_above_mean = c(NA_real_, NA_real_),
    y_above_mean = c(NA_real_, NA_real_),
    z_above_mean = c(NA_real_, NA_real_),
    x_energy = c(NA_real_, 0.00002054091549),
    y_energy = c(NA_real_, 0.00001809346463),
    z_energy = c(NA_real_, 0.000582901524),
    avg_res_acc = c(NA_real_, NA_real_),
    sma = c(NA_real_, NA_real_)
  ))
})

### Activity ============
test_that("Activity", {
  db_test("Activity", true_data = tibble::tibble(
    measurement_id = c(
      "fbf85cd7-6d37-53a8-5c44-ad8fe13ef7ac",
      "ef96364c-d1f4-5f73-ce40-277f078e3d0f",
      "5ba54e77-4bcf-c8d1-17ff-71b9ed908897"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("13:59:59", "14:00:00", "14:00:01"),
    confidence = c(NA, 100L, 99L),
    type = c(NA, "WALKING", "STILL")
  ))
})

### AirQuality ============
test_that("AirQuality", {
  db_test("AirQuality", true_data = tibble::tibble(
    measurement_id = c(
      "d8dc5bea-6184-bafb-d65c-0a180aa21eb0",
      "c68f94a8-1992-8ce5-0d29-8290c75679c7"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("13:59:59", "14:00:00"),
    air_quality_index = c(NA, 31L),
    air_quality_level = c(NA, "MODERATE"),
    source = c(NA, "IRCEL-CELINE - Belgian Interregional Environment Agency"),
    place = c(NA, "Aarschot, Belgium"),
    latitude = c(NA, 50.43555),
    longitude = c(NA, 4.146731)
  ))
})

### InstalledApps ============
test_that("InstalledApps", {
  db_test("InstalledApps", true_data = tibble::tibble(
    measurement_id = c(
      "b7eacaef-a4ff-90c0-c5a2-7e293dee7721_1",
      paste0("c48c62ac-a738-0ee0-586d-29ab0acff25a_", 1:16)
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("13:59:59", rep("14:00:00", 16)),
    app = c(
      NA, "WhatsApp", "Google Play Services for AR", "BBC News", "Clock", "Google Play Music",
      "Mobile Device Information Provider", "Calculator", "Google Play Movies & TV",
      "Photos", "Google Play Books", "Home", "Google PDF Viewer", "m-Path Sense",
      "Google VR Services", "Google Play Games", "Google News"
    )
  ))
})

### AppUsage ============
test_that("AppUsage", {
  db_test("AppUsage", true_data = tibble::tibble(
    measurement_id = c(
      "2c3de6bf-e63d-4c47-8d14-36b9505d8968_1",
      paste0("2e3f8f0a-9de1-f328-6a2e-29b168925179_", 1:7)
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("13:59:59", rep("14:00:00", 7)),
    end_time = rep(NA_character_, 8),
    start = c(NA, rep("2021-11-14T14:00:00.000000Z", 7)),
    end = c(NA, rep("2021-11-14T14:30:00.000000Z", 7)),
    usage = c(NA, 525L, 18L, 230L, 3L, 10L, 2L, 33L),
    app = c(
      "", "kuleuven", "securitycenter", "home", "systemui",
      "permissioncontroller", "powerkeeper", "settings"
    ),
    package_name = rep(NA_character_, 8),
    last_foreground = rep(NA_character_, 8)
  ))
})

### Battery ============
test_that("Battery", {
  db_test("Battery", true_data = tibble::tibble(
    measurement_id = c(
      "1cc3b19c-a56a-ebc0-cd55-d5faf928c6c8",
      "8a224e06-6587-6be6-b7e8-a85fea1d974f",
      "ebd712d8-eb84-dea9-5b98-e9f16b2e0533"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:00", "14:01:00", "14:02:00"),
    battery_level = c(100L, 99L, NA),
    battery_status = c("charging", "discharging", NA)
  ))
})

### Bluetooth ============
test_that("Bluetooth", {
  db_test("Bluetooth", true_data = tibble::tibble(
    measurement_id = c(
      paste0("fff452f8-f927-86ca-b853-5236f25ec7dd_", 1:2),
      "88cf67a2-16d0-e7cc-2be5-6296d7a0f0b3_1"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:00", "14:00:00", "14:01:00"),
    start_scan = c(NA_character_, NA_character_, NA_character_),
    end_scan = c(NA_character_, NA_character_, NA_character_),
    advertisement_name = c(
      "ace4ec2999d033ac6b76def024d53507dc6eafbb",
      "3dbd32cf6327dd01fd0fab96d4e202686d5e0e96", NA
    ),
    bluetooth_device_id = c(
      "a94074e7b729cf573aa9e34218c4318b04b62560",
      "9b0cbfcbee534e034b1dec3b2057f7c310bf01d9", NA
    ),
    bluetooth_device_name = c(
      "915e4ac54400e2304392f1a2d123561853295e50",
      "761dd8aa1f57e662a05d0b601b508b2694ed4275", NA
    ),
    bluetooth_device_type = c("unknown", "le", NA),
    connectable = c(0L, 1L, NA),
    rssi = c(-84L, -91L, NA),
    tx_power_level = c(100L, NA, NA)
  ))
})

### Calendar ============
test_that("Calendar", {
  db_test("Calendar", true_data = tibble::tibble(
    measurement_id = c(
      paste0("7b050885-ad2f-3cd3-9217-5eb876e3c5c1_", 1:2),
      "5bafebd2-3d01-2355-0ad4-5e1f697b690f_1"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:00", "14:00:00", "14:01:00"),
    event_id = c("279", "262", NA),
    calendar_id = c("3", "8", NA),
    title = c(
      "f4984b61b560744d74f08ea659bb3a2275537f31",
      "7fb8bab16fd45110007e30e1d6dd4a7f6811bc8d", NA
    ),
    description = c(
      "28a74980d7bebc37dbc9cfa949871ce83edc2b26",
      "3d4e4a2d7dac35a3264e7026b798c7dde2b39675", NA
    ),
    start = c("2021-11-14T14:00:00.000Z", "2021-11-14T14:30:00.000Z", NA),
    end = c("2021-11-14T14:30:00.000Z", "2021-11-14T15:00:00.000Z", NA),
    all_day = c(0L, 0L, NA),
    location = c("PSI", "02. Leuven", NA),
    attendees = c("c87ec7481c056ea2c88541cd41b966a9f8114d51", NA, NA)
  ))
})

### Connectivity ============
test_that("Connectivity", {
  db_test("Connectivity", true_data = tibble::tibble(
    measurement_id = c(
      "27a5777a-ec41-80de-afa4-d2e7f6b02fcf",
      "2d430c2a-5b16-1dce-0e2f-c049c44e3729"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:00", "14:01:00"),
    connectivity_status = c("wifi", NA)
  ))
})

### Device ============
test_that("Device", {
  db_test("Device", true_data = tibble::tibble(
    measurement_id = c(
      "bce3c272-3e06-4c84-f533-5bbbeaaac049",
      "ac1230a8-ed5f-4ded-7fca-7693a5ab4124",
      "138b9204-a313-96f3-89de-42bc2ac9d1e9"
    ),
    participant_id = "12345",
    date = c("2021-11-13", "2021-11-14", "2021-11-14"),
    time = c(rep("13:00:00", 2), "14:01:00"),
    device_id = c(rep("QKQ1.200628.002", 2), NA),
    hardware = c(rep("qcom", 2), NA),
    device_name = c(rep("gauguin", 2), NA),
    device_manufacturer = c(rep("Xiaomi", 2), NA),
    device_model = c(rep("M2007J17G", 2), NA),
    operating_system = c(rep("REL", 2), NA),
    platform = c(rep("Android", 2), NA),
    operating_system_version = rep(NA_character_, 3),
    sdk = rep(NA_character_, 3)
  ))
})

### Error ============
test_that("Error", {
  db_test("Error", true_data = tibble::tibble(
    measurement_id = c(
      "df74ca23-3d0f-fcb1-70b9-12b2051c1115",
      "b1c326ff-e96b-059f-7f1b-72d3384b7222"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:00", "14:01:00"),
    message = c(paste(
      "AirQuality Probe Exception: SocketException: Failed host lookup:",
      "'api.waqi.info' (OS Error: nodename nor servname provided, or not known,",
      "errno = 8)"
    ), NA)
  ))
})

### Gyroscope ============
test_that("Gyroscope", {
  db_test("Gyroscope", true_data = tibble::tibble(
    measurement_id = c(
      "06bce1d4-b4a9-d1f1-2f06-cc76d872a61g",
      "6d8aa5b8-cd1b-c482-f678-5267c85b393b"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:01.000", "14:00:02.000"),
    x = c(NA, -1.0022081288080912509),
    y = c(NA, -2.0004500896919943741),
    z = c(NA, -3.02347734926530979)
  ))
})

### Light ============
test_that("Light", {
  db_test("Light", true_data = tibble::tibble(
    measurement_id = c(
      "23d93a4e-7ff8-f057-828d-c728c9466f8a",
      "9199095d-acc1-737d-3029-5089738c6079"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:00", "14:00:10"),
    end_time = c(NA_character_, NA_character_),
    mean_lux = c(353, NA),
    std_lux = c(80.2, NA),
    min_lux = c(20.1, NA),
    max_lux = c(985, NA)
  ))
})

### Location ============
test_that("Location", {
  db_test("Location", true_data = tibble::tibble(
    measurement_id = c(
      "24d0a408-a87c-2ea4-80c0-23a964a16675",
      "62db94d7-2155-f867-b7c4-f878681ec736"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:00", "14:01:00"),
    latitude = c(paste0(
      "beb3005c45cb250b9841b9aae0637fa5610c45ce206ca38494f7f74a6cbdf8566cdf0d8967e",
      "9422bb857a4d87c2e6c08d85f162525a8f9d6a72a8"
    ), NA),
    longitude = c(paste0(
      "8a4f368c36ab8e6e9dcbca9d7ef88a313f48e841e77746c54f1ca5b1887cd56f123d8ba36e",
      "92465e5483ebbd335b242ff8fade5b31a43e20dd851"
    ), NA),
    altitude = c(71.7784264646543, NA),
    accuracy = c(22.1168141708386, NA),
    vertical_accuracy = rep(NA_real_, 2),
    speed = c(0.467787307347347, NA),
    speed_accuracy = c(1.9150350848860985, NA),
    heading = c(35.5130489970395, NA),
    heading_accuracy = rep(NA_real_, 2),
    is_mock = rep(NA_real_, 2) # SQLite doesn't have a boolean type
  ))
})

### Memory  ============
test_that("Memory", {
  db_test("Memory", true_data = tibble::tibble(
    measurement_id = c(
      "7f2fbe8b-af33-0078-137e-ed21c0f97b10",
      "7e3eb79e-56b2-441d-c7ab-890ba478b923"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:00", "14:01:00"),
    free_physical_memory = c(2027336609L, NA),
    free_virtual_memory = c(233377575L, NA)
  ))
})

### Mobility ============
test_that("Mobility", {
  db_test("Mobility", true_data = tibble::tibble(
    measurement_id = c(
      "95d7c9e8-bf65-1d89-264a-6d43e9c98e25",
      "6b789772-18ae-ce5f-b522-a38793023e1d"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:00", "14:01:00"),
    number_of_places = c(6L, NA),
    location_variance = c(0.232154350507205752, NA),
    entropy = c(1.6472347857577631, NA),
    normalized_entropy = c(0.3990261427129516, NA),
    home_stay = c(-1, NA),
    distance_travelled = c(0L, NA)
  ))
})

### Noise ============
test_that("Noise", {
  db_test("Noise", true_data = tibble::tibble(
    measurement_id = c(
      "5fc9ecdf-c62c-955c-e59d-d6c4a2ee9a2a",
      "6ab8de47-fdfd-b2bd-bba1-6b6641906835"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:00", "14:01:00"),
    end_time = c(NA_character_, NA_character_),
    mean_decibel = c(42.96355291627242, NA),
    std_decibel = c(4.971839655603458, NA),
    min_decibel = c(34.289534207582256, NA),
    max_decibel = c(71.893975307503923, NA)
  ))
})

### PhoneLog ============

### Pedometer ============
test_that("Pedometer", {
  db_test("Pedometer", true_data = tibble::tibble(
    measurement_id = c(
      "5ea89a50-777c-11eb-8c91-3f093a6e6e87",
      "50dc55c0-356c-11ec-b60d-ddab48d96f4a",
      "af026c22-1d7f-6bb0-b492-9d705c5bdda8"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:00", "14:00:01", "14:00:02"),
    step_count = c(1000L, 1001L, NA)
  ))
})

### Screen ============
test_that("Screen", {
  db_test("Screen", true_data = tibble::tibble(
    measurement_id = c(
      "c40b2459-e598-8fdb-7925-e55ed3048baf",
      "28560428-b12d-e753-f5d4-61c1d51fcd58"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:00", "14:00:01"),
    screen_event = c(NA, "SCREEN_ON")
  ))
})

### TextMessage ============

### Weather ============
test_that("Weather", {
  db_test("Weather", true_data = tibble::tibble(
    measurement_id = c(
      "d42140e5-d91b-8ec5-87fd-f003e4fdcdf3",
      "84f92625-1c56-fdd8-18ed-5fffa8f69e6c"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:00", "14:01:00"),
    country = c("BE", NA),
    area_name = c("Arrondissement Leuven", NA),
    weather_main = c("Clouds", NA),
    weather_description = c("overcast clouds", NA),
    sunrise = c("2021-11-14T07:30:00.000", NA),
    sunset = c("2021-11-14T18:00:00.000", NA),
    latitude = c(50.1234, NA),
    longitude = c(4.1234, NA),
    pressure = c(1000L, NA),
    wind_speed = c(3.12, NA),
    wind_degree = c(250, NA),
    humidity = c(50L, NA),
    cloudiness = c(90L, NA),
    rain_last_hour = c(0, NA),
    rain_last_3hours = c(0, NA),
    snow_last_hour = c(0, NA),
    snow_last_3hours = c(0, NA),
    temperature = c(17.123456789, NA),
    temp_min = c(17, NA),
    temp_max = c(17.123456789, NA)
  ))
})

### WifI ============
test_that("Wifi", {
  db_test("Wifi", true_data = tibble::tibble(
    measurement_id = c(
      "59ce179b-3a3c-42d8-6e5c-6a1030545e92",
      "0392ed98-a2d5-fcd1-2ec5-ac13dd865f9a"
    ),
    participant_id = "12345",
    date = "2021-11-14",
    time = c("14:00:00", "14:01:00"),
    ssid = c(NA, "878779215c977eefd2c434d71a0e172aa19b66e1"),
    bssid = c(NA, "2f054f4cbb48bb589f40e82ac0433912d1db3931"),
    ip = c(NA, "10.415.918.389")
  ))
})

Try the mpathsenser package in your browser

Any scripts or data that you put into this service are public.

mpathsenser documentation built on May 29, 2024, 9:11 a.m.