From f293e14b61d8bf47c1441b7a1b1ba7126917d733 Mon Sep 17 00:00:00 2001 From: Guan Inf <2307786059@qq.com> Date: Tue, 3 Jun 2025 18:27:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E4=B8=8A=E6=AC=A1=E7=9A=84st?= =?UTF-8?q?dc++,Token,scanner=5Ftest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/Token.h | 7 ++ include/stdc++.h | 234 ++++++++++++++++++++++++++++++++++++++++++ src/main.cpp | 1 + unit/scanner_test.cpp | 16 +++ 4 files changed, 258 insertions(+) create mode 100644 include/Token.h create mode 100644 include/stdc++.h create mode 100644 unit/scanner_test.cpp diff --git a/include/Token.h b/include/Token.h new file mode 100644 index 0000000..c4eaacc --- /dev/null +++ b/include/Token.h @@ -0,0 +1,7 @@ +#pragma once +#include "stdc++.h" + +struct Token{ + int id,type; + Token (int id,int type):id(id),type(type){} +}; \ No newline at end of file diff --git a/include/stdc++.h b/include/stdc++.h new file mode 100644 index 0000000..24514a8 --- /dev/null +++ b/include/stdc++.h @@ -0,0 +1,234 @@ +#pragma once +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2023 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) +// any later version. + +// This library 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#endif + +// C++ +// #include +// #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#endif + +#if __cplusplus >= 201703L +#include +// #include +#include +#include +#include +#endif + +#if __cplusplus >= 202002L +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus > 202002L +#include +#include +#if __cpp_impl_coroutine +# include +#endif +#endif + +#if _GLIBCXX_HOSTED +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +// #include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 202002L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus > 202002L +#include +#include +#if __has_include() +# include +#endif +#include +#include +#endif + +#endif // HOSTED diff --git a/src/main.cpp b/src/main.cpp index 836a507..9cbfab3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,6 +2,7 @@ #include "doctest.h" int main() { + doctest::Context context; context.addFilter("test-case-exclude", "*math*"); // exclude test cases with "math" in their name context.setOption("abort-after", 5); // stop test execution after 5 failed assertions diff --git a/unit/scanner_test.cpp b/unit/scanner_test.cpp new file mode 100644 index 0000000..c2f7265 --- /dev/null +++ b/unit/scanner_test.cpp @@ -0,0 +1,16 @@ +#include "doctest.h" +#include "stdc++.h" +#include "Scanner.h" +#include "Tbs.h" +using std::string,std::vector; + +TEST_CASE("Scanner_Test") { + Scanner scanner; + Tbs tb; + scanner.scan("to be or not to be is a problem.",tb); + unordered_map test; + test[1] = "to",test[2] = "be",test[3] = "or",test[4] = "not",test[5] = "to",test[6] ="be",test[7] = "is",test[8] = "a"; + + CHECK(tb.ConstTable == test); + CHECK(tb.IdTable == test); +}