| 47 | using namespace pdal; |
| 48 | |
| 49 | TEST(Stats, handcalc) |
| 50 | { |
| 51 | PointTable table; |
| 52 | table.layout()->registerDim(Dimension::Id::X); |
| 53 | PointViewPtr v(new PointView(table)); |
| 54 | v->setField(Dimension::Id::X, 0, 1); |
| 55 | v->setField(Dimension::Id::X, 1, 5); |
| 56 | v->setField(Dimension::Id::X, 2, 8); |
| 57 | v->setField(Dimension::Id::X, 3, 25); |
| 58 | v->setField(Dimension::Id::X, 4, 20); |
| 59 | v->setField(Dimension::Id::X, 5, 17); |
| 60 | |
| 61 | BufferReader r; |
| 62 | r.addView(v); |
| 63 | StatsFilter f; |
| 64 | f.setInput(r); |
| 65 | Options opts; |
| 66 | opts.add("advanced", true); |
| 67 | f.setOptions(opts); |
| 68 | |
| 69 | f.prepare(table); |
| 70 | f.execute(table); |
| 71 | |
| 72 | const stats::Summary& xstats = f.getStats(Dimension::Id::X); |
| 73 | |
| 74 | EXPECT_EQ(xstats.minimum(), 1.0); |
| 75 | EXPECT_EQ(xstats.maximum(), 25.0); |
| 76 | EXPECT_DOUBLE_EQ(xstats.average(), 12.0 + 2.0 / 3.0); |
| 77 | EXPECT_DOUBLE_EQ(xstats.sampleVariance(), 88.2 + .2 / 3); |
| 78 | EXPECT_DOUBLE_EQ(xstats.sampleStddev(), std::sqrt(88.2 + .2 / 3)); |
| 79 | EXPECT_NEAR(xstats.populationSkewness(), 0.05589204039, 0.000000001); |
| 80 | EXPECT_NEAR(xstats.sampleSkewness(), 0.07653332827, 0.000000001); |
| 81 | |
| 82 | EXPECT_NEAR(xstats.populationKurtosis(), 1.504435885, 0.000000001); |
| 83 | EXPECT_NEAR(xstats.populationExcessKurtosis(), -1.495564114, 0.000000001); |
| 84 | EXPECT_NEAR(xstats.sampleKurtosis(), 4.387937998, 0.000000001); |
| 85 | EXPECT_NEAR(xstats.sampleExcessKurtosis(), -1.862062002, 0.000000001); |
| 86 | } |
| 87 | |
| 88 | |
| 89 | TEST(Stats, baseline) |
no test coverage detected