test_that("", {
  
  seed <- 01102025
  no_of_obs <- 102
  no_of_vars <- 50
  no_of_factors <- 3
  trans_error_var_cov <- diag(1, no_of_factors)
  loading_matrix <- matrix(round(rnorm(no_of_vars * no_of_factors)), no_of_vars, no_of_factors)
  meas_error_mean <- rep(0, no_of_vars)
  meas_error_var_cov <- diag(1, no_of_vars)
  trans_var_coeff <- cbind(diag(0.5, no_of_factors), -diag(0.25, no_of_factors))
  factor_lag_order <- 2
  simul_delay <- c(floor(rexp(no_of_vars, 1)))
  quarterfy <- TRUE
  quarterly_variable_ratio  <- 0.10
  corr <- TRUE
  beta_param <- 2
  set.seed(seed)
  burn_in <- 999
  starting_date <- "1970-01-01"
  rescale <- TRUE
  check_stationarity <- TRUE
  stationarity_check_threshold <- 1e-10
  
  # Generate pseudo-date data
  expect_silent(data_date <- simFM(no_of_obs = no_of_obs, no_of_vars = no_of_vars,
                                   no_of_factors = no_of_factors, loading_matrix = loading_matrix,
                                   meas_error_mean = meas_error_mean, meas_error_var_cov = meas_error_var_cov,
                                   trans_error_var_cov = trans_error_var_cov, trans_var_coeff = trans_var_coeff,
                                   factor_lag_order = factor_lag_order, delay = simul_delay, quarterfy = quarterfy,
                                   quarterly_variable_ratio  = quarterly_variable_ratio, corr = corr,
                                   beta_param = beta_param, seed = seed, burn_in = burn_in, starting_date = starting_date,
                                   rescale = rescale, check_stationarity = check_stationarity,
                                   stationarity_check_threshold = stationarity_check_threshold))
  
  # Generate numeric data
  expect_silent(data_mat <- simFM(no_of_obs = no_of_obs, no_of_vars = no_of_vars,
                                  no_of_factors = no_of_factors, loading_matrix = loading_matrix,
                                  meas_error_mean = meas_error_mean, meas_error_var_cov = meas_error_var_cov,
                                  trans_error_var_cov = trans_error_var_cov, trans_var_coeff = trans_var_coeff,
                                  factor_lag_order = factor_lag_order, delay = simul_delay, quarterfy = quarterfy,
                                  quarterly_variable_ratio  = quarterly_variable_ratio, corr = corr,
                                  beta_param = beta_param, seed = seed, burn_in = burn_in, starting_date = NULL,
                                  rescale = rescale, check_stationarity = check_stationarity,
                                  stationarity_check_threshold = stationarity_check_threshold))
  
  # Basic checks
  expect_equal(t(coredata(data_date$data)), data_mat$data)
  expect_equal(t(coredata(data_date$factors)), data_mat$factors)
  expect_equal(data_date$trans_var_coeff, data_mat$trans_var_coeff)
  expect_equal(data_date$loading_matrix, data_mat$loading_matrix)
  expect_equal(t(coredata(data_date$meas_error)), data_mat$meas_error)
  expect_equal(data_date$meas_error_var_cov, data_mat$meas_error_var_cov)
  expect_equal(data_date$trans_error_var_cov, data_mat$trans_error_var_cov)
  expect_equal(data_date$frequency, data_mat$frequency)
  expect_equal(data_date$delay, data_mat$delay)
  
})
