The next little game in the series where I make a fancy rogue game.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
roguish/tests/matrix2.cpp

53 lines
1.2 KiB

#include <catch2/catch_test_macros.hpp>
#include <fmt/core.h>
#include <string>
#include "rand.hpp"
#include "scratchpad/amitmatrix.hpp"
#include "worldbuilder.hpp"
#include <iostream>
#include <numeric>
#include <algorithm>
using namespace fmt;
using std::string;
inline void random_matrix(amt::Matrix<int> &out) {
for(size_t y = 0; y < out.rows(); y++) {
for(size_t x = 0; x < out.cols(); x++) {
out[y][x] = Random::uniform<int>(-10,10);
}
}
}
TEST_CASE("basic matrix iterator", "[matrix2:basic]") {
size_t width = Random::uniform<size_t>(5, 11);
size_t height = Random::uniform<size_t>(3, 13);
amt::Matrix<int> test{height,width,0};
random_matrix(test);
println("FIRST RANDOM");
std::cout << test << std::endl;
for(auto cell : test) {
print("{} ", cell);
}
println("DIRECT ACCESS");
for(size_t y = 0; y < test.rows(); y++) {
for(size_t x = 0; x < test.cols(); x++) {
print("{} ", test(x, y));
}
}
auto filled = test;
std::fill(filled.begin(), filled.end(), 8);
println("SECOND FILLED");
std::cout << filled << std::endl;
auto iota_style = filled;
std::iota(iota_style.begin(), iota_style.end(), 0);
println("THIRD IOTA");
std::cout << iota_style << std::endl;
}