mirror of
https://github.com/allemangD/toddcox-visualize.git
synced 2025-11-10 03:52:48 -05:00
This is a combination of many commits: --------------------------------------------------------------------------- final. add public/private for core classes. wip - big cleanup cosets. index<>, cosets<>, and group<> all defined transparent <void> overrides that operate directly on indices, not names inheritance hierarchy means one can drop or change generator names still missing path support. wip - named cosets fix lang test wip - named generators Move Group docstring away from specialization. Remove tc::Gen; use Group<void> remove tc::Rel add thousands separators for benchmark limits add generators list to tc::group remove pair_map
55 lines
1.1 KiB
C++
55 lines
1.1 KiB
C++
#include <tc/core.hpp>
|
|
#include <tc/groups.hpp>
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
// "5 3 3"
|
|
// "5 (3 3)"
|
|
// "[5 3 3]"
|
|
// "[4 3 [3 5] 3]"
|
|
// "{3 4 5 6 7 8 9}"
|
|
// "3 {3 3 [4] 3} 5"
|
|
// "5 * 3"
|
|
// "5 * [3]"
|
|
// "5 * {2 3}"
|
|
// "5 * [3 2]"
|
|
// "(5 2) * [3 2]"
|
|
// "4 [3 * [2 3]] 5"
|
|
// "{3 * 3} [4] [5]"
|
|
|
|
TEST(coxeter, simple) {
|
|
auto g = tc::coxeter("5 3 3");
|
|
|
|
ASSERT_EQ(g.rank(), 4);
|
|
|
|
EXPECT_EQ(g.get(0, 0), 1);
|
|
EXPECT_EQ(g.get(0, 1), 5);
|
|
EXPECT_EQ(g.get(0, 2), 2);
|
|
EXPECT_EQ(g.get(0, 3), 2);
|
|
|
|
EXPECT_EQ(g.get(1, 0), 5);
|
|
EXPECT_EQ(g.get(1, 1), 1);
|
|
EXPECT_EQ(g.get(1, 2), 3);
|
|
EXPECT_EQ(g.get(1, 3), 2);
|
|
|
|
EXPECT_EQ(g.get(2, 0), 2);
|
|
EXPECT_EQ(g.get(2, 1), 3);
|
|
EXPECT_EQ(g.get(2, 2), 1);
|
|
EXPECT_EQ(g.get(2, 3), 3);
|
|
|
|
EXPECT_EQ(g.get(3, 0), 2);
|
|
EXPECT_EQ(g.get(3, 1), 2);
|
|
EXPECT_EQ(g.get(3, 2), 3);
|
|
EXPECT_EQ(g.get(3, 3), 1);
|
|
}
|
|
|
|
TEST(coxeter, looping) {
|
|
auto g = tc::coxeter("{5 3 4}");
|
|
|
|
ASSERT_EQ(g.rank(), 3);
|
|
|
|
EXPECT_EQ(g.get(0, 1), 5);
|
|
EXPECT_EQ(g.get(1, 2), 3);
|
|
EXPECT_EQ(g.get(2, 0), 4);
|
|
}
|