-
-
Notifications
You must be signed in to change notification settings - Fork 379
Expand file tree
/
Copy pathgq_writer_test.cpp
More file actions
75 lines (69 loc) · 3.04 KB
/
gq_writer_test.cpp
File metadata and controls
75 lines (69 loc) · 3.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <stan/services/util/gq_writer.hpp>
#include <gtest/gtest.h>
#include <test/unit/util.hpp>
#include <stan/callbacks/stream_writer.hpp>
#include <stan/callbacks/stream_logger.hpp>
#include <sstream>
#include <test/test-models/good/services/test_gq.hpp>
#include <stan/io/empty_var_context.hpp>
#include <stan/services/util/create_rng.hpp>
#include <test/unit/services/instrumented_callbacks.hpp>
class ServicesUtilGQWriter : public testing::Test {
public:
ServicesUtilGQWriter() : model(context, 0, &model_log) {}
std::stringstream model_log;
stan::io::empty_var_context context;
std::stringstream sample_ss, logger_ss;
stan_model model;
};
TEST_F(ServicesUtilGQWriter, t1) {
stan::callbacks::stream_writer sample_writer(sample_ss, "");
stan::callbacks::stream_logger logger(logger_ss, logger_ss, logger_ss,
logger_ss, logger_ss);
stan::services::util::gq_writer writer(sample_writer, logger, 2);
writer.write_gq_names(model);
// model test_gq.stan gen quantities block has 3 params: xqg, y_rep.1,
// y_rep.2
EXPECT_EQ(count_matches("xgq", sample_ss.str()), 1);
EXPECT_EQ(count_matches("x2gq", sample_ss.str()), 1);
EXPECT_EQ(count_matches("y_rep", sample_ss.str()), 2);
}
TEST_F(ServicesUtilGQWriter, t2) {
stan::callbacks::stream_writer sample_writer(sample_ss, "");
stan::callbacks::stream_logger logger(logger_ss, logger_ss, logger_ss,
logger_ss, logger_ss);
stan::rng_t rng1 = stan::services::util::create_rng(0, 1);
std::vector<double> draw;
draw.push_back(-2.345);
draw.push_back(-6.789);
stan::services::util::gq_writer writer(sample_writer, logger, 2);
writer.write_gq_values(model, rng1, draw);
// model test_gq.stan generates 4 values, 3 commas
EXPECT_EQ(count_matches(",", sample_ss.str()), 3);
EXPECT_EQ(count_matches("nan", sample_ss.str()), 0);
}
TEST_F(ServicesUtilGQWriter, timing) {
stan::callbacks::stream_writer sample_writer(sample_ss, "#");
stan::callbacks::stream_logger logger(logger_ss, logger_ss, logger_ss,
logger_ss, logger_ss);
stan::services::util::gq_writer writer(sample_writer, logger, 2);
writer.write_timing(4.31);
// model test_gq.stan generates 4 values, 3 commas
EXPECT_EQ(count_matches("4.31 seconds", logger_ss.str()), 1);
EXPECT_EQ(count_matches("4.31 seconds", sample_ss.str()), 1)
<< sample_ss.str();
}
TEST_F(ServicesUtilGQWriter, TestExceptions) {
stan::callbacks::stream_writer sample_writer(sample_ss, "");
stan::callbacks::stream_logger logger(logger_ss, logger_ss, logger_ss,
logger_ss, logger_ss);
stan::rng_t rng1 = stan::services::util::create_rng(0, 1);
std::vector<double> draw;
draw.push_back(2.345);
draw.push_back(6.789);
stan::services::util::gq_writer writer(sample_writer, logger, 2);
writer.write_gq_values(model, rng1, draw);
// model test_gq.stan generates 4 values, 3 commas
EXPECT_EQ(count_matches(",", sample_ss.str()), 3);
EXPECT_EQ(count_matches("nan", sample_ss.str()), 4);
}