/* * * Copyright (C) 2023 Brett Terpstra * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include #include "blt/std/assert.h" std::optional get() { return 10; } void printLines(const std::vector& lines) { for (const auto& v : lines) std::cout << v << "\n"; std::cout << std::endl; } int testFunc(int a, int b) { if (a == b) { a = 2 * b; b = 3 * a; } return a; } template void e1(const T& test) { BLT_START_INTERVAL("Enumeration (" + blt::type_string().substr(0, 30) + ":" + std::to_string(test.size()) + ")", "blt::enumerate"); for (auto pair : blt::enumerate(test)) { blt::black_box(pair); } BLT_END_INTERVAL("Enumeration (" + blt::type_string().substr(0, 30) + ":" + std::to_string(test.size()) + ")", "blt::enumerate"); } template void e2(const T& test) { BLT_START_INTERVAL("Enumeration (" + blt::type_string().substr(0, 30) + ":" + std::to_string(test.size()) + ")", "for index"); for (size_t i = 0; i < test.size(); i++) { const auto& v = test[i]; blt::black_box(std::pair{i, v}); } BLT_END_INTERVAL("Enumeration (" + blt::type_string().substr(0, 30) + ":" + std::to_string(test.size()) + ")", "for index"); } template void e3(const T& test) { BLT_START_INTERVAL("Enumeration (" + blt::type_string().substr(0, 30) + ":" + std::to_string(test.size()) + ")", "for range"); size_t counter = 0; for (const auto& s : test) { blt::black_box(std::pair{counter, s}); ++counter; } BLT_END_INTERVAL("Enumeration (" + blt::type_string().substr(0, 30) + ":" + std::to_string(test.size()) + ")", "for range"); } template void testEnumerate(const T& test) { e1(test); e2(test); e3(test); BLT_PRINT_PROFILE("Enumeration (" + blt::type_string().substr(0, 30) + ":" + std::to_string(test.size()) + ")"); BLT_TRACE(blt::type_string()); BLT_TRACE(blt::extract_types()); } void getfucked() { //BLT_ASSERT(false); } void fuckered() { getfucked(); } void blt::test::utility::run() { //std::vector temp; std::optional hi(10); if (auto test = get()) { } blt::string::TableFormatter tableTest("Intrinsic Action Value Table"); tableTest.addColumn("Thing"); tableTest.addColumn("Value"); tableTest.addRow({"Cuddles", "1 / minute"}); tableTest.addRow({"Hand Job", "10"}); tableTest.addRow({"Head", "100"}); tableTest.addRow({"Sleeping Together (Non-Sexual)", "1,000"}); tableTest.addRow({"Actual Sex", "5,000"}); tableTest.addRow({"Sleeping Together (Sexual)", "10,000"}); tableTest.addRow({"Relationship (I would do anything for you)", "1,000,000,000,000"}); printLines(tableTest.createTable(true, true)); blt::string::BinaryTreeFormatter::TreeFormat format; format.horizontalPadding = 3; format.verticalPadding = 0; format.horizontalSpacing = 3; format.collapse = true; blt::string::BinaryTreeFormatter treeFormatter("I love Men", format); treeFormatter.getRoot()->with( (new string::BinaryTreeFormatter::Node("Guys"))->with(nullptr, new string::BinaryTreeFormatter::Node("Child2")), (new string::BinaryTreeFormatter::Node("Femboys")) ->with(nullptr, new string::BinaryTreeFormatter::Node("Child1"))); printLines(treeFormatter.construct()); blt::string::BinaryTreeFormatter assign1("price > 50", format); assign1.getRoot()->with( // left (new string::BinaryTreeFormatter::Node("member")) ->with((new string::BinaryTreeFormatter::Node("total -= total * 0.15")) ->with((new string::BinaryTreeFormatter::Node("total > 500")) ->with(new string::BinaryTreeFormatter::Node("total -= 25"))), (new string::BinaryTreeFormatter::Node("total -= total * 0.05"))), // right (new string::BinaryTreeFormatter::Node("quality")) ->with((new string::BinaryTreeFormatter::Node("total -= total * 0.02")), (new string::BinaryTreeFormatter::Node("total -= total * 0.05"))) ); printLines(assign1.construct()); blt::string::TableFormatter tableQ2i1("Iteration 0"); tableQ2i1.addColumn("Statement"); tableQ2i1.addColumn("IN"); tableQ2i1.addColumn("OUT"); tableQ2i1.addRow({"Entry (0)", " -- ", "{, }"}); tableQ2i1.addRow({"(1)", "{, }", "{, }"}); tableQ2i1.addRow({"(2)", "{, }", "{, }"}); tableQ2i1.addRow({"(3)", "{, }", "{}"}); tableQ2i1.addRow({"(4)", "{}", "{}"}); tableQ2i1.addRow({"(5)", "{}", "{}"}); tableQ2i1.addRow({"Exit (6)", "{}", " -- "}); printLines(tableQ2i1.createTable(true, true)); blt::string::TableFormatter tableQ2i2("Iteration 1"); tableQ2i2.addColumn("Statement"); tableQ2i2.addColumn("IN"); tableQ2i2.addColumn("OUT"); tableQ2i2.addRow({"Entry (0)", " -- ", "{, }"}); tableQ2i2.addRow({"(1)", "{, }", "{, }"}); tableQ2i2.addRow({"(2)", "{, }", "{, }"}); tableQ2i2.addRow({"(3)", "{, }", "{, }"}); tableQ2i2.addRow({"(4)", "{, }", "{, }"}); tableQ2i2.addRow({"(5)", "{, }", "{, }"}); tableQ2i2.addRow({"Exit (6)", "{, }", " -- "}); printLines(tableQ2i2.createTable(true, true)); blt::string::TableFormatter tableQ2i3("Iteration 2"); tableQ2i3.addColumn("Statement"); tableQ2i3.addColumn("IN"); tableQ2i3.addColumn("OUT"); tableQ2i3.addRow({"Entry (0)", " -- ", "{, }"}); tableQ2i3.addRow({"(1)", "{, }", "{, }"}); tableQ2i3.addRow({"(2)", "{, }", "{, }"}); tableQ2i3.addRow({"(3)", "{, }", "{, }"}); tableQ2i3.addRow({"(4)", "{, }", "{, }"}); tableQ2i3.addRow({"(5)", "{, }", "{, }"}); tableQ2i3.addRow({"Exit (6)", "{, }", " -- "}); printLines(tableQ2i3.createTable(true, true)); blt::string::TableFormatter tableQ2i4("Iteration 3"); tableQ2i4.addColumn("Statement"); tableQ2i4.addColumn("IN"); tableQ2i4.addColumn("OUT"); tableQ2i4.addRow({"Entry (0)", " -- ", "{, }"}); tableQ2i4.addRow({"(1)", "{, }", "{, }"}); tableQ2i4.addRow({"(2)", "{, }", "{, }"}); tableQ2i4.addRow({"(3)", "{, }", "{, }"}); tableQ2i4.addRow({"(4)", "{, }", "{, }"}); tableQ2i4.addRow({"(5)", "{, }", "{, }"}); tableQ2i4.addRow({"Exit (6)", "{, }", " -- "}); printLines(tableQ2i4.createTable(true, true)); blt::string::TableFormatter tableQ4i0("Q4 Iteration 0"); tableQ4i0.addColumn("Statement"); tableQ4i0.addColumn("IN"); tableQ4i0.addColumn("OUT"); tableQ4i0.addRow({"Entry (1)", " -- ", " {} "}); tableQ4i0.addRow({"(2)", "{a + b, a * b, a - b, b + 1}", "{a + b, a * b, a - b, b + 1}"}); tableQ4i0.addRow({"(3)", "{a + b, a * b, a - b, b + 1}", "{a + b, a * b, a - b, b + 1}"}); tableQ4i0.addRow({"(4)", "{a + b, a * b, a - b, b + 1}", "{a + b, a * b, a - b, b + 1}"}); tableQ4i0.addRow({"(5)", "{a + b, a * b, a - b, b + 1}", "{a + b, a * b, a - b, b + 1}"}); tableQ4i0.addRow({"(6)", "{a + b, a * b, a - b, b + 1}", "{a + b, a * b, a - b, b + 1}"}); tableQ4i0.addRow({"(7)", "{a + b, a * b, a - b, b + 1}", "{a + b, a * b, a - b, b + 1}"}); tableQ4i0.addRow({"(8)", "{a + b, a * b, a - b, b + 1}", "{a + b, a * b, a - b, b + 1}"}); tableQ4i0.addRow({"(9)", "{a + b, a * b, a - b, b + 1}", "{a + b, a * b, a - b, b + 1}"}); tableQ4i0.addRow({"Exit (10)", "{a + b, a * b, a - b, b + 1}", " -- "}); printLines(tableQ4i0.createTable(true, true)); blt::string::TableFormatter tableQ4i1("Q4 Iteration 1"); tableQ4i1.addColumn("Statement"); tableQ4i1.addColumn("IN"); tableQ4i1.addColumn("OUT"); tableQ4i1.addRow({"Entry (1)", " -- ", " {} "}); tableQ4i1.addRow({"(2)", "{}", "{}"}); tableQ4i1.addRow({"(3)", "{}", "{}"}); tableQ4i1.addRow({"(4)", "{}", "{a + b}"}); tableQ4i1.addRow({"(5)", "{a + b}", "{a + b, a * b}"}); tableQ4i1.addRow({"(6)", "{a + b, a * b}", "{a + b, a * b, a - b}"}); tableQ4i1.addRow({"(7)", "{a + b, a * b, a - b}", "{}"}); tableQ4i1.addRow({"(8)", "{}", "{a + b}"}); tableQ4i1.addRow({"(9)", "{a + b}", "{a + b, a * b}"}); tableQ4i1.addRow({"Exit (10)", "{a + b, a * b, a - b}", " -- "}); printLines(tableQ4i1.createTable(true, true)); blt::string::TableFormatter tableQ4i2("Q4 Iteration 2"); tableQ4i2.addColumn("Statement"); tableQ4i2.addColumn("IN"); tableQ4i2.addColumn("OUT"); tableQ4i2.addRow({"Entry (1)", " -- ", " {} "}); tableQ4i2.addRow({"(2)", "{}", "{}"}); tableQ4i2.addRow({"(3)", "{}", "{}"}); tableQ4i2.addRow({"(4)", "{}", "{a + b}"}); tableQ4i2.addRow({"(5)", "{a + b}", "{a + b, a * b}"}); tableQ4i2.addRow({"(6)", "{a + b, a * b}", "{a + b, a * b, a - b}"}); tableQ4i2.addRow({"(7)", "{a + b, a * b, a - b}", "{}"}); tableQ4i2.addRow({"(8)", "{}", "{a + b}"}); tableQ4i2.addRow({"(9)", "{a + b}", "{a + b, a * b}"}); tableQ4i2.addRow({"Exit (10)", "{a + b, a * b, a - b}", " -- "}); printLines(tableQ4i2.createTable(true, true)); for (int gensize = 1; gensize < 8; gensize++){ size_t size = static_cast(std::pow(10, gensize)); std::vector str; for (size_t i = 0; i < size; i++) str.push_back(std::to_string(i)); testEnumerate(str); } fuckered(); }