From 2bb25db66a044f8c489ab6449386a32f31de1256 Mon Sep 17 00:00:00 2001 From: Dimitar Trendafilov Date: Sun, 28 Oct 2018 18:08:12 +0200 Subject: Added googletest based tests --- JSImpl/solution/genie.lua | 2 ++ 1 file changed, 2 insertions(+) (limited to 'JSImpl/solution') diff --git a/JSImpl/solution/genie.lua b/JSImpl/solution/genie.lua index 571bf9c..5806154 100644 --- a/JSImpl/solution/genie.lua +++ b/JSImpl/solution/genie.lua @@ -23,3 +23,5 @@ solution 'IPL' uuid(os.uuid('JSImpl')) files '../src/*.cpp' files '../src/*.h' + + include '../test' -- cgit v1.3.1-23-gd82d From e89ae67ea4d71912caef286d3b4dcc3a5a64d134 Mon Sep 17 00:00:00 2001 From: Dimitar Trendafilov Date: Sun, 28 Oct 2018 18:47:12 +0200 Subject: Moved lexer and parser tests to the test app --- JSImpl/solution/genie.lua | 12 ++- JSImpl/src/Tests/main.cpp | 240 -------------------------------------------- JSImpl/test/LexerTests.cpp | 213 +++++++++++++++++++++++++++++++++++++++ JSImpl/test/ParserTests.cpp | 22 ++++ JSImpl/test/genie.lua | 3 +- 5 files changed, 247 insertions(+), 243 deletions(-) create mode 100644 JSImpl/test/LexerTests.cpp create mode 100644 JSImpl/test/ParserTests.cpp (limited to 'JSImpl/solution') diff --git a/JSImpl/solution/genie.lua b/JSImpl/solution/genie.lua index 5806154..ced7ec1 100644 --- a/JSImpl/solution/genie.lua +++ b/JSImpl/solution/genie.lua @@ -17,11 +17,19 @@ solution 'IPL' objdir(root .. 'obj/release') configuration '*' + project 'JSLib' + kind 'StaticLib' + language 'C++' + uuid(os.uuid('JSLib')) + files '../src/*.cpp' + removefiles '../src/main.cpp' + files '../src/*.h' + project 'JSImpl' kind 'ConsoleApp' language 'C++' uuid(os.uuid('JSImpl')) - files '../src/*.cpp' - files '../src/*.h' + files '../src/main.cpp' + links 'JSLib' include '../test' diff --git a/JSImpl/src/Tests/main.cpp b/JSImpl/src/Tests/main.cpp index f92144a..a46866d 100644 --- a/JSImpl/src/Tests/main.cpp +++ b/JSImpl/src/Tests/main.cpp @@ -1,244 +1,4 @@ -#include "Lexer.h" -#include "Parser.h" -#include "ASTPrinter.h" -#include "ASTInterpreter.h" -#include -#define LOG(msg) std::cout << msg << std::endl -#define EXECUTE_TEST(test) std::cout << #test << " "; test(); - -#define CHECK(cond) if (cond) {LOG("PASS");} else {LOG(#cond " FAIL");} - -// Lexer Tests -void TestLess() -{ - IPLVector tokens; - Tokenize("<", tokens); - - CHECK(tokens.size() == 2 && tokens[0].Type == TokenType::Less); -} - -void TestNumber() -{ - IPLVector tokens; - Tokenize("213434.24", tokens); - - CHECK(tokens.size() == 2 && tokens[0].Type == TokenType::Number && tokens[0].Number == 213434.24); -} - -void TestNumberStartWithNine() -{ - IPLVector tokens; - Tokenize("999", tokens); - CHECK(tokens.size() == 2 && tokens[0].Type == TokenType::Number && tokens[0].Number == 999); -} - -void TestNumberStartWithZero() -{ - IPLVector tokens; - Tokenize("0999", tokens); - CHECK(tokens.size() == 2 && tokens[0].Type == TokenType::Number && tokens[0].Number == 999); -} - -void TestSpaceNewLineSpace() -{ - IPLVector tokens; - Tokenize(" \n var a = 4; ", tokens); - CHECK(tokens.size() == 6 && tokens[0].Type == TokenType::Var && - tokens[1].Type == TokenType::Identifier && - tokens[2].Type == TokenType::Equal && - tokens[3].Type == TokenType::Number && - tokens[4].Type == TokenType::Semicolon); -} - -void TestString() -{ - IPLVector tokens; - Tokenize("\"alabala\"", tokens); - CHECK(tokens.size() == 2 && tokens[0].Type == TokenType::String && tokens[0].Lexeme == "\"alabala\""); -} - -void TestStringSingleQuotedStrings() -{ - IPLVector tokens; - Tokenize("'alabala'", tokens); - CHECK(tokens.size() == 2 && tokens[0].Type == TokenType::String && tokens[0].Lexeme == "'alabala'"); -} - -void TestKeyWord() -{ - IPLVector tokens; - Tokenize("for", tokens); - CHECK(tokens.size() == 2 && tokens[0].Type == TokenType::For); -} - -void TestVariableDeclaration() -{ - IPLVector tokens; - Tokenize("var pesho = 10", tokens); - - CHECK(tokens.size() == 5 && tokens[0].Type == TokenType::Var - && tokens[1].Type == TokenType::Identifier - && tokens[2].Type == TokenType::Equal - && tokens[3].Type == TokenType::Number - && tokens[4].Type == TokenType::Eof); -} - -void TestStringError() -{ - IPLVector tokens; - const auto& res = Tokenize("\" aaaa", tokens); - CHECK(!res.IsSuccessful && res.Error.Row == 0 && res.Error.Column == 6); -} - -void TestWhiteSpaceTokens() -{ - IPLVector tokens; - const auto& res = Tokenize(" 1\n2 abc\n \n", tokens, { true, false }); - CHECK(res.IsSuccessful - && tokens.size() == 8 - && tokens[0].Type == TokenType::Whitespace - && tokens[0].Lexeme == " " - && tokens[1].Type == TokenType::Number - && tokens[1].Number == 1 - && tokens[2].Type == TokenType::Whitespace - && tokens[2].Lexeme == "\n" - && tokens[3].Type == TokenType::Number - && tokens[3].Number == 2 - && tokens[4].Type == TokenType::Whitespace - && tokens[4].Lexeme == " " - && tokens[5].Type == TokenType::Identifier - && tokens[5].Lexeme == "abc" - && tokens[6].Type == TokenType::Whitespace - && tokens[6].Lexeme == "\n \n" - && tokens[7].Type == TokenType::Eof); -} - -void TestSimpleComment() -{ - IPLVector tokens; - const auto& res = Tokenize("//comment", tokens, { false, true }); - CHECK(res.IsSuccessful - && tokens.size() == 2 - && tokens[0].Type == TokenType::Comment - && tokens[0].Lexeme == "//comment" - && tokens[1].Type == TokenType::Eof); -} - -void TestSimpleMultiLineComment() -{ - IPLVector tokens; - const auto& res = Tokenize("/*comment\ncomment*/", tokens, { false, true }); - CHECK(res.IsSuccessful - && tokens.size() == 2 - && tokens[0].Type == TokenType::Comment - && tokens[0].Lexeme == "/*comment\ncomment*/" - && tokens[1].Type == TokenType::Eof); -} - -void TestConsecutiveMultiLineComment() -{ - IPLVector tokens; - const auto& res = Tokenize("/*comment1\ncomment1*//*comment2\ncomment2*/", tokens, { false, true }); - CHECK(res.IsSuccessful - && tokens.size() == 3 - && tokens[0].Type == TokenType::Comment - && tokens[0].Lexeme == "/*comment1\ncomment1*/" - && tokens[1].Type == TokenType::Comment - && tokens[1].Lexeme == "/*comment2\ncomment2*/" - && tokens[2].Type == TokenType::Eof); -} - -void TestConsecutiveMultiLineCommentWithSpace() -{ - IPLVector tokens; - const auto& res = Tokenize("/*comment1\ncomment1*/\n\n\n/*comment2\ncomment2*/", tokens, { false, true }); - CHECK(res.IsSuccessful - && tokens.size() == 3 - && tokens[0].Type == TokenType::Comment - && tokens[0].Lexeme == "/*comment1\ncomment1*/" - && tokens[1].Type == TokenType::Comment - && tokens[1].Lexeme == "/*comment2\ncomment2*/" - && tokens[2].Type == TokenType::Eof); -} - -void TestConsecutiveMultiLineCommentWithSpaceWithTokens() -{ - IPLVector tokens; - const auto& res = Tokenize("//comment1\n/*comment2\ncomment2*/\n\n\n/*comment3\ncomment3*/", tokens, { true, true }); - CHECK(res.IsSuccessful - && tokens.size() == 6 - && tokens[0].Type == TokenType::Comment - && tokens[0].Lexeme == "//comment1" - && tokens[1].Type == TokenType::Whitespace - && tokens[1].Lexeme == "\n" - && tokens[2].Type == TokenType::Comment - && tokens[2].Lexeme == "/*comment2\ncomment2*/" - && tokens[3].Type == TokenType::Whitespace - && tokens[3].Lexeme == "\n\n\n" - && tokens[4].Type == TokenType::Comment - && tokens[4].Lexeme == "/*comment3\ncomment3*/" - && tokens[5].Type == TokenType::Eof); -} - -void TestCommentError() -{ - IPLVector tokens; - const auto& res = Tokenize(" aa\n /*", tokens); - CHECK(!res.IsSuccessful && res.Error.Row == 1 && res.Error.Column == 3); -} - -// Parser Tests -void TestParseUnaryExpr() -{ - IPLVector tokens; - Tokenize("function pesho() { var a = 0; return a; } var a = \"3\";", tokens); - - // TODO make actual test :D - auto expr = Parse(tokens); - ASTPrinter p(std::cout); - expr->Accept(p); - std::cout << "\n"; -} - -void TestHexNumber() -{ - IPLVector tokens; - const auto& res = Tokenize("0x10", tokens); - - CHECK(res.IsSuccessful && tokens[0].Type == TokenType::Number && tokens[0].Number == 16); -} - -void TestScientificNotationNumber() -{ - IPLVector tokens; - const auto& res = Tokenize("1e2", tokens); - - CHECK(res.IsSuccessful && tokens[0].Type == TokenType::Number && tokens[0].Number == 100); -} - int main() { - EXECUTE_TEST(TestLess); - EXECUTE_TEST(TestNumber); - EXECUTE_TEST(TestNumberStartWithNine); - EXECUTE_TEST(TestNumberStartWithZero); - EXECUTE_TEST(TestString); - EXECUTE_TEST(TestSpaceNewLineSpace); - EXECUTE_TEST(TestStringSingleQuotedStrings); - EXECUTE_TEST(TestKeyWord); - EXECUTE_TEST(TestVariableDeclaration); - EXECUTE_TEST(TestWhiteSpaceTokens); - EXECUTE_TEST(TestSimpleComment); - EXECUTE_TEST(TestSimpleMultiLineComment); - EXECUTE_TEST(TestConsecutiveMultiLineComment); - EXECUTE_TEST(TestConsecutiveMultiLineCommentWithSpace); - EXECUTE_TEST(TestConsecutiveMultiLineCommentWithSpaceWithTokens); - EXECUTE_TEST(TestCommentError); - EXECUTE_TEST(TestHexNumber); - EXECUTE_TEST(TestScientificNotationNumber); - -#if defined(_WIN32) - std::system("pause"); -#endif return 0; } diff --git a/JSImpl/test/LexerTests.cpp b/JSImpl/test/LexerTests.cpp new file mode 100644 index 0000000..b24d7a2 --- /dev/null +++ b/JSImpl/test/LexerTests.cpp @@ -0,0 +1,213 @@ +#include +#include + +#include + +TEST(Lexer, Less) +{ + IPLVector tokens; + Tokenize("<", tokens); + + ASSERT_EQ(tokens.size(), 2u); + ASSERT_EQ(tokens[0].Type, TokenType::Less); +} + +TEST(Lexer, Number) +{ + IPLVector tokens; + Tokenize("213434.24", tokens); + + ASSERT_EQ(tokens.size(), 2u); + ASSERT_EQ(tokens[0].Type, TokenType::Number); + ASSERT_EQ(tokens[0].Number, 213434.24); +} + + +TEST(Lexer, HexNumber) +{ + IPLVector tokens; + const auto& res = Tokenize("0x10", tokens); + + ASSERT_EQ(tokens.size(), 2u); + ASSERT_EQ(tokens[0].Type, TokenType::Number); + ASSERT_EQ(tokens[0].Number, 16); +} + +TEST(Lexer, ScientificNotationNumber) +{ + IPLVector tokens; + const auto& res = Tokenize("1e2", tokens); + + ASSERT_EQ(tokens.size(), 2u); + ASSERT_EQ(tokens[0].Type, TokenType::Number); + ASSERT_EQ(tokens[0].Number, 100); +} + +TEST(Lexer, NumberStartWithNine) +{ + IPLVector tokens; + Tokenize("999", tokens); + ASSERT_EQ(tokens.size(), 2u); + ASSERT_EQ(tokens[0].Type, TokenType::Number); + ASSERT_EQ(tokens[0].Number, 999); +} + +TEST(Lexer, NumberStartWithZero) +{ + IPLVector tokens; + Tokenize("0999", tokens); + ASSERT_EQ(tokens.size(), 2u); + ASSERT_EQ(tokens[0].Type, TokenType::Number); + ASSERT_EQ(tokens[0].Number, 999); +} + +TEST(Lexer, SpaceNewLineSpace) +{ + IPLVector tokens; + Tokenize(" \n var a = 4; ", tokens); + ASSERT_TRUE(tokens.size() == 6 && tokens[0].Type == TokenType::Var && + tokens[1].Type == TokenType::Identifier && + tokens[2].Type == TokenType::Equal && + tokens[3].Type == TokenType::Number && + tokens[4].Type == TokenType::Semicolon); +} + +TEST(Lexer, String) +{ + IPLVector tokens; + Tokenize("\"alabala\"", tokens); + ASSERT_TRUE(tokens.size() == 2 && tokens[0].Type == TokenType::String + && tokens[0].Lexeme == "\"alabala\""); +} + +TEST(Lexer, StringSingleQuotedStrings) +{ + IPLVector tokens; + Tokenize("'alabala'", tokens); + ASSERT_TRUE(tokens.size() == 2 && tokens[0].Type == TokenType::String && tokens[0].Lexeme == "'alabala'"); +} + +TEST(Lexer, KeyWord) +{ + IPLVector tokens; + Tokenize("for", tokens); + ASSERT_TRUE(tokens.size() == 2 && tokens[0].Type == TokenType::For); +} + +TEST(Lexer, VariableDeclaration) +{ + IPLVector tokens; + Tokenize("var pesho = 10", tokens); + + ASSERT_TRUE(tokens.size() == 5 && tokens[0].Type == TokenType::Var + && tokens[1].Type == TokenType::Identifier + && tokens[2].Type == TokenType::Equal + && tokens[3].Type == TokenType::Number + && tokens[4].Type == TokenType::Eof); +} + +TEST(Lexer, StringError) +{ + IPLVector tokens; + const auto& res = Tokenize("\" aaaa", tokens); + ASSERT_TRUE(!res.IsSuccessful && res.Error.Row == 0 && res.Error.Column == 6); +} + +TEST(Lexer, TestWhiteSpaceTokens) +{ + IPLVector tokens; + const auto& res = Tokenize(" 1\n2 abc\n \n", tokens, { true, false }); + ASSERT_TRUE(res.IsSuccessful + && tokens.size() == 8 + && tokens[0].Type == TokenType::Whitespace + && tokens[0].Lexeme == " " + && tokens[1].Type == TokenType::Number + && tokens[1].Number == 1 + && tokens[2].Type == TokenType::Whitespace + && tokens[2].Lexeme == "\n" + && tokens[3].Type == TokenType::Number + && tokens[3].Number == 2 + && tokens[4].Type == TokenType::Whitespace + && tokens[4].Lexeme == " " + && tokens[5].Type == TokenType::Identifier + && tokens[5].Lexeme == "abc" + && tokens[6].Type == TokenType::Whitespace + && tokens[6].Lexeme == "\n \n" + && tokens[7].Type == TokenType::Eof); +} + +TEST(Lexer, SimpleComment) +{ + IPLVector tokens; + const auto& res = Tokenize("//comment", tokens, { false, true }); + ASSERT_TRUE(res.IsSuccessful + && tokens.size() == 2 + && tokens[0].Type == TokenType::Comment + && tokens[0].Lexeme == "//comment" + && tokens[1].Type == TokenType::Eof); +} + +TEST(Lexer, SimpleMultiLineComment) +{ + IPLVector tokens; + const auto& res = Tokenize("/*comment\ncomment*/", tokens, { false, true }); + ASSERT_TRUE(res.IsSuccessful + && tokens.size() == 2 + && tokens[0].Type == TokenType::Comment + && tokens[0].Lexeme == "/*comment\ncomment*/" + && tokens[1].Type == TokenType::Eof); +} + +TEST(Lexer, ConsecutiveMultiLineComment) +{ + IPLVector tokens; + const auto& res = Tokenize("/*comment1\ncomment1*//*comment2\ncomment2*/", tokens, { false, true }); + ASSERT_TRUE(res.IsSuccessful + && tokens.size() == 3 + && tokens[0].Type == TokenType::Comment + && tokens[0].Lexeme == "/*comment1\ncomment1*/" + && tokens[1].Type == TokenType::Comment + && tokens[1].Lexeme == "/*comment2\ncomment2*/" + && tokens[2].Type == TokenType::Eof); +} + +TEST(Lexer, ConsecutiveMultiLineCommentWithSpace) +{ + IPLVector tokens; + const auto& res = Tokenize("/*comment1\ncomment1*/\n\n\n/*comment2\ncomment2*/", tokens, { false, true }); + ASSERT_TRUE(res.IsSuccessful + && tokens.size() == 3 + && tokens[0].Type == TokenType::Comment + && tokens[0].Lexeme == "/*comment1\ncomment1*/" + && tokens[1].Type == TokenType::Comment + && tokens[1].Lexeme == "/*comment2\ncomment2*/" + && tokens[2].Type == TokenType::Eof); +} + +TEST(Lexer, ConsecutiveMultiLineCommentWithSpaceWithTokens) +{ + IPLVector tokens; + const auto& res = Tokenize("//comment1\n/*comment2\ncomment2*/\n\n\n/*comment3\ncomment3*/", tokens, { true, true }); + ASSERT_TRUE(res.IsSuccessful + && tokens.size() == 6 + && tokens[0].Type == TokenType::Comment + && tokens[0].Lexeme == "//comment1" + && tokens[1].Type == TokenType::Whitespace + && tokens[1].Lexeme == "\n" + && tokens[2].Type == TokenType::Comment + && tokens[2].Lexeme == "/*comment2\ncomment2*/" + && tokens[3].Type == TokenType::Whitespace + && tokens[3].Lexeme == "\n\n\n" + && tokens[4].Type == TokenType::Comment + && tokens[4].Lexeme == "/*comment3\ncomment3*/" + && tokens[5].Type == TokenType::Eof); +} + +TEST(Lexer, CommentError) +{ + IPLVector tokens; + const auto& res = Tokenize(" aa\n /*", tokens); + ASSERT_TRUE(!res.IsSuccessful && res.Error.Row == 1 && + res.Error.Column == 3); +} + diff --git a/JSImpl/test/ParserTests.cpp b/JSImpl/test/ParserTests.cpp new file mode 100644 index 0000000..a884f37 --- /dev/null +++ b/JSImpl/test/ParserTests.cpp @@ -0,0 +1,22 @@ +#include +#include +#include +#include + +#include + +#include + +TEST(Parser, ParseUnaryExpr) +{ + IPLVector tokens; + Tokenize("function pesho() { var a = 0; return a; } var a = \"3\";", tokens); + + // TODO make actual test :D + auto expr = Parse(tokens); + std::ostringstream output; + ASTPrinter p(output); + expr->Accept(p); + ASSERT_TRUE(!output.str().empty()); +} + diff --git a/JSImpl/test/genie.lua b/JSImpl/test/genie.lua index c46b4a8..3bf1a4c 100644 --- a/JSImpl/test/genie.lua +++ b/JSImpl/test/genie.lua @@ -8,9 +8,10 @@ project 'Test' includedirs { 'googletest/googletest/include', 'googletest/googlemock/include', - '../JSImpl/googlemock/include', + '..', } links { + 'JSLib', 'gtest', 'gmock', 'gtest_main', -- cgit v1.3.1-23-gd82d From a00a7fd7d3a18670bc7237d2d410915c74d7380c Mon Sep 17 00:00:00 2001 From: Dimitar Trendafilov Date: Mon, 29 Oct 2018 19:56:04 +0200 Subject: Migrated the manual sln and vcxproj to generated by genie - lost Unicode character set, since genie breaks main function naming ATM - removed Win32 as platform --- JSImpl/solution/JSImpl.sln | 106 ++++++++------ JSImpl/solution/JSImpl.vcxproj | 251 +++++++++++++++++---------------- JSImpl/solution/JSImpl.vcxproj.filters | 19 ++- JSImpl/solution/JSLib.vcxproj | 140 ++++++++++++++++++ JSImpl/solution/JSLib.vcxproj.filters | 54 +++++++ JSImpl/solution/genie.lua | 21 +-- JSImpl/test/Test.vcxproj | 143 +++++++++++++++++++ JSImpl/test/Test.vcxproj.filters | 8 ++ JSImpl/test/genie.lua | 4 +- JSImpl/test/gmock.vcxproj | 138 ++++++++++++++++++ JSImpl/test/gmock.vcxproj.filters | 60 ++++++++ JSImpl/test/gtest.vcxproj | 137 ++++++++++++++++++ JSImpl/test/gtest.vcxproj.filters | 57 ++++++++ JSImpl/test/gtest_main.vcxproj | 125 ++++++++++++++++ JSImpl/test/gtest_main.vcxproj.filters | 19 +++ 15 files changed, 1097 insertions(+), 185 deletions(-) create mode 100644 JSImpl/solution/JSLib.vcxproj create mode 100644 JSImpl/solution/JSLib.vcxproj.filters create mode 100644 JSImpl/test/Test.vcxproj create mode 100644 JSImpl/test/Test.vcxproj.filters create mode 100644 JSImpl/test/gmock.vcxproj create mode 100644 JSImpl/test/gmock.vcxproj.filters create mode 100644 JSImpl/test/gtest.vcxproj create mode 100644 JSImpl/test/gtest.vcxproj.filters create mode 100644 JSImpl/test/gtest_main.vcxproj create mode 100644 JSImpl/test/gtest_main.vcxproj.filters (limited to 'JSImpl/solution') diff --git a/JSImpl/solution/JSImpl.sln b/JSImpl/solution/JSImpl.sln index 9deeed2..bbd3b9f 100644 --- a/JSImpl/solution/JSImpl.sln +++ b/JSImpl/solution/JSImpl.sln @@ -1,45 +1,61 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.25420.1 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JSImpl", "JSImpl.vcxproj", "{EE0F8C6F-3619-4A46-BC19-FAEAD4167EE4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JS.Common", "..\projects\JS.Common\JS.Common.vcxitems", "{45D41ACC-2C3C-43D2-BC10-02AA73FFC7C7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestApp", "..\projects\TestApp\TestApp.vcxproj", "{05DB0989-2720-45CC-8689-2FF047B4FD74}" -EndProject -Global - GlobalSection(SharedMSBuildProjectFiles) = preSolution - ..\projects\JS.Common\JS.Common.vcxitems*{05db0989-2720-45cc-8689-2ff047b4fd74}*SharedItemsImports = 4 - ..\projects\JS.Common\JS.Common.vcxitems*{45d41acc-2c3c-43d2-bc10-02aa73ffc7c7}*SharedItemsImports = 9 - ..\projects\JS.Common\JS.Common.vcxitems*{ee0f8c6f-3619-4a46-bc19-faead4167ee4}*SharedItemsImports = 4 - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {EE0F8C6F-3619-4A46-BC19-FAEAD4167EE4}.Debug|x64.ActiveCfg = Debug|x64 - {EE0F8C6F-3619-4A46-BC19-FAEAD4167EE4}.Debug|x64.Build.0 = Debug|x64 - {EE0F8C6F-3619-4A46-BC19-FAEAD4167EE4}.Debug|x86.ActiveCfg = Debug|Win32 - {EE0F8C6F-3619-4A46-BC19-FAEAD4167EE4}.Debug|x86.Build.0 = Debug|Win32 - {EE0F8C6F-3619-4A46-BC19-FAEAD4167EE4}.Release|x64.ActiveCfg = Release|x64 - {EE0F8C6F-3619-4A46-BC19-FAEAD4167EE4}.Release|x64.Build.0 = Release|x64 - {EE0F8C6F-3619-4A46-BC19-FAEAD4167EE4}.Release|x86.ActiveCfg = Release|Win32 - {EE0F8C6F-3619-4A46-BC19-FAEAD4167EE4}.Release|x86.Build.0 = Release|Win32 - {05DB0989-2720-45CC-8689-2FF047B4FD74}.Debug|x64.ActiveCfg = Debug|x64 - {05DB0989-2720-45CC-8689-2FF047B4FD74}.Debug|x64.Build.0 = Debug|x64 - {05DB0989-2720-45CC-8689-2FF047B4FD74}.Debug|x86.ActiveCfg = Debug|Win32 - {05DB0989-2720-45CC-8689-2FF047B4FD74}.Debug|x86.Build.0 = Debug|Win32 - {05DB0989-2720-45CC-8689-2FF047B4FD74}.Release|x64.ActiveCfg = Release|x64 - {05DB0989-2720-45CC-8689-2FF047B4FD74}.Release|x64.Build.0 = Release|x64 - {05DB0989-2720-45CC-8689-2FF047B4FD74}.Release|x86.ActiveCfg = Release|Win32 - {05DB0989-2720-45CC-8689-2FF047B4FD74}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Test", "..\test\Test.vcxproj", "{45DC8C7C-3113-8E0D-DAFF-7310C6150A0F}" + ProjectSection(ProjectDependencies) = postProject + {19EA680D-85FE-90BE-4E80-341EBA538DEF} = {19EA680D-85FE-90BE-4E80-341EBA538DEF} + {EC34880F-5849-B0C0-21CB-53208D9EACF1} = {EC34880F-5849-B0C0-21CB-53208D9EACF1} + {B686840F-229B-ACC0-EB1C-502057F0A8F1} = {B686840F-229B-ACC0-EB1C-502057F0A8F1} + {30B03E7E-1C68-80CB-856F-592771461BBC} = {30B03E7E-1C68-80CB-856F-592771461BBC} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JSLib", "JSLib.vcxproj", "{19EA680D-85FE-90BE-4E80-341EBA538DEF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JSImpl", "JSImpl.vcxproj", "{549B84BA-403D-AF90-29F8-C2E4153936E1}" + ProjectSection(ProjectDependencies) = postProject + {19EA680D-85FE-90BE-4E80-341EBA538DEF} = {19EA680D-85FE-90BE-4E80-341EBA538DEF} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest", "..\test\gtest.vcxproj", "{EC34880F-5849-B0C0-21CB-53208D9EACF1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmock", "..\test\gmock.vcxproj", "{B686840F-229B-ACC0-EB1C-502057F0A8F1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_main", "..\test\gtest_main.vcxproj", "{30B03E7E-1C68-80CB-856F-592771461BBC}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {45DC8C7C-3113-8E0D-DAFF-7310C6150A0F}.Debug|x64.ActiveCfg = Debug|x64 + {45DC8C7C-3113-8E0D-DAFF-7310C6150A0F}.Debug|x64.Build.0 = Debug|x64 + {45DC8C7C-3113-8E0D-DAFF-7310C6150A0F}.Release|x64.ActiveCfg = Release|x64 + {45DC8C7C-3113-8E0D-DAFF-7310C6150A0F}.Release|x64.Build.0 = Release|x64 + {19EA680D-85FE-90BE-4E80-341EBA538DEF}.Debug|x64.ActiveCfg = Debug|x64 + {19EA680D-85FE-90BE-4E80-341EBA538DEF}.Debug|x64.Build.0 = Debug|x64 + {19EA680D-85FE-90BE-4E80-341EBA538DEF}.Release|x64.ActiveCfg = Release|x64 + {19EA680D-85FE-90BE-4E80-341EBA538DEF}.Release|x64.Build.0 = Release|x64 + {549B84BA-403D-AF90-29F8-C2E4153936E1}.Debug|x64.ActiveCfg = Debug|x64 + {549B84BA-403D-AF90-29F8-C2E4153936E1}.Debug|x64.Build.0 = Debug|x64 + {549B84BA-403D-AF90-29F8-C2E4153936E1}.Release|x64.ActiveCfg = Release|x64 + {549B84BA-403D-AF90-29F8-C2E4153936E1}.Release|x64.Build.0 = Release|x64 + {EC34880F-5849-B0C0-21CB-53208D9EACF1}.Debug|x64.ActiveCfg = Debug|x64 + {EC34880F-5849-B0C0-21CB-53208D9EACF1}.Debug|x64.Build.0 = Debug|x64 + {EC34880F-5849-B0C0-21CB-53208D9EACF1}.Release|x64.ActiveCfg = Release|x64 + {EC34880F-5849-B0C0-21CB-53208D9EACF1}.Release|x64.Build.0 = Release|x64 + {B686840F-229B-ACC0-EB1C-502057F0A8F1}.Debug|x64.ActiveCfg = Debug|x64 + {B686840F-229B-ACC0-EB1C-502057F0A8F1}.Debug|x64.Build.0 = Debug|x64 + {B686840F-229B-ACC0-EB1C-502057F0A8F1}.Release|x64.ActiveCfg = Release|x64 + {B686840F-229B-ACC0-EB1C-502057F0A8F1}.Release|x64.Build.0 = Release|x64 + {30B03E7E-1C68-80CB-856F-592771461BBC}.Debug|x64.ActiveCfg = Debug|x64 + {30B03E7E-1C68-80CB-856F-592771461BBC}.Debug|x64.Build.0 = Debug|x64 + {30B03E7E-1C68-80CB-856F-592771461BBC}.Release|x64.ActiveCfg = Release|x64 + {30B03E7E-1C68-80CB-856F-592771461BBC}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + EndGlobalSection +EndGlobal diff --git a/JSImpl/solution/JSImpl.vcxproj b/JSImpl/solution/JSImpl.vcxproj index 39beeba..e2d50d1 100644 --- a/JSImpl/solution/JSImpl.vcxproj +++ b/JSImpl/solution/JSImpl.vcxproj @@ -1,125 +1,126 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - {EE0F8C6F-3619-4A46-BC19-FAEAD4167EE4} - JSImpl - 8.1 - - - - Application - true - v140 - MultiByte - - - Application - false - v140 - true - MultiByte - - - Application - true - v140 - MultiByte - - - Application - false - v140 - true - MultiByte - - - - - - - - - - - - - - - - - - - - - - - - Level4 - Disabled - true - true - - - - - Level4 - Disabled - true - true - - - - - Level4 - MaxSpeed - true - true - true - true - - - true - true - - - - - Level4 - MaxSpeed - true - true - true - None - true - true - - - true - true - - - - - - - - - \ No newline at end of file + + + + + Debug + x64 + + + Release + x64 + + + + {549B84BA-403D-AF90-29F8-C2E4153936E1} + JSImpl + 8.1 + Win32Proj + + + + Application + true + v140 + x64 + + + Application + false + v140 + x64 + + + + + + + + + + + + + ..\build\bin\Debug\ + ..\build\obj\Debug\x64\Debug\JSImpl\ + JSImpl + .exe + true + + + ..\build\bin\Release\ + ..\build\obj\Release\x64\Release\JSImpl\ + JSImpl + .exe + false + + + + %(AdditionalOptions) + Disabled + + false + EnableFastChecks + MultiThreadedDebugDLL + true + true + + Level4 + true + EditAndContinue + $(IntDir)JSImpl.compile.pdb + + + + + + Console + true + $(OutDir)JSImpl.pdb + $(OutDir)JSImpl.exe + mainCRTStartup + MachineX64 + + + + + %(AdditionalOptions) + MaxSpeed + + false + true + MultiThreadedDLL + true + true + + Level4 + true + ProgramDatabase + $(IntDir)JSImpl.compile.pdb + + + + + + Console + true + $(OutDir)JSImpl.pdb + true + true + $(OutDir)JSImpl.exe + mainCRTStartup + MachineX64 + + + + + + + + + {19EA680D-85FE-90BE-4E80-341EBA538DEF} + + + + + + diff --git a/JSImpl/solution/JSImpl.vcxproj.filters b/JSImpl/solution/JSImpl.vcxproj.filters index de250fc..daeea8c 100644 --- a/JSImpl/solution/JSImpl.vcxproj.filters +++ b/JSImpl/solution/JSImpl.vcxproj.filters @@ -1,6 +1,13 @@ - - - - - - \ No newline at end of file + + + + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + + + src + + + diff --git a/JSImpl/solution/JSLib.vcxproj b/JSImpl/solution/JSLib.vcxproj new file mode 100644 index 0000000..69f19e0 --- /dev/null +++ b/JSImpl/solution/JSLib.vcxproj @@ -0,0 +1,140 @@ + + + + + Debug + x64 + + + Release + x64 + + + + {19EA680D-85FE-90BE-4E80-341EBA538DEF} + JSLib + 8.1 + Win32Proj + + + + StaticLibrary + true + v140 + x64 + + + StaticLibrary + false + v140 + x64 + + + + + + + + + + + + + ..\build\bin\Debug\ + ..\build\obj\Debug\x64\Debug\JSLib\ + JSLib + .lib + + + ..\build\bin\Release\ + ..\build\obj\Release\x64\Release\JSLib\ + JSLib + .lib + + + + %(AdditionalOptions) + Disabled + + false + EnableFastChecks + MultiThreadedDebugDLL + true + true + + Level4 + true + EditAndContinue + $(OutDir)JSLib.pdb + + + + + + $(OutDir)JSLib.lib + MachineX64 + + + Windows + true + $(OutDir)JSLib.pdb + + + + + %(AdditionalOptions) + MaxSpeed + + false + true + MultiThreadedDLL + true + true + + Level4 + true + ProgramDatabase + $(OutDir)JSLib.pdb + + + + + + $(OutDir)JSLib.lib + MachineX64 + + + Windows + true + $(OutDir)JSLib.pdb + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JSImpl/solution/JSLib.vcxproj.filters b/JSImpl/solution/JSLib.vcxproj.filters new file mode 100644 index 0000000..afcbbb9 --- /dev/null +++ b/JSImpl/solution/JSLib.vcxproj.filters @@ -0,0 +1,54 @@ + + + + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + + + src + + + src + + + src + + + src + + + src + + + diff --git a/JSImpl/solution/genie.lua b/JSImpl/solution/genie.lua index ced7ec1..8b34d97 100644 --- a/JSImpl/solution/genie.lua +++ b/JSImpl/solution/genie.lua @@ -1,20 +1,24 @@ -solution 'IPL' - configurations {'debug', 'release'} +solution 'JSImpl' + configurations {'Debug', 'Release'} + platforms { 'x64' } flags { 'FatalWarnings', 'ExtraWarnings', 'Cpp14', + 'Symbols', } + local root = '../build/' - configuration 'debug' - targetdir(root .. 'bin/debug') - objdir(root .. 'obj/debug') + configuration 'Debug' + targetdir(root .. 'bin/Debug') + objdir(root .. 'obj/Debug') - configuration 'release' - targetdir(root .. 'bin/release') - objdir(root .. 'obj/release') + configuration 'Release' + flags 'OptimizeSpeed' + targetdir(root .. 'bin/Release') + objdir(root .. 'obj/Release') configuration '*' project 'JSLib' @@ -33,3 +37,4 @@ solution 'IPL' links 'JSLib' include '../test' + startproject 'Test' diff --git a/JSImpl/test/Test.vcxproj b/JSImpl/test/Test.vcxproj new file mode 100644 index 0000000..9c67eae --- /dev/null +++ b/JSImpl/test/Test.vcxproj @@ -0,0 +1,143 @@ + + + + + Debug + x64 + + + Release + x64 + + + + {45DC8C7C-3113-8E0D-DAFF-7310C6150A0F} + Test + 8.1 + Win32Proj + + + + Application + true + v140 + x64 + + + Application + false + v140 + x64 + + + + + + + + + + + + + ..\build\bin\Debug\ + ..\build\obj\Debug\x64\Debug\Test\ + Test + .exe + true + + + ..\build\bin\Release\ + ..\build\obj\Release\x64\Release\Test\ + Test + .exe + false + + + + %(AdditionalOptions) + Disabled + googletest\googletest\include;googletest\googlemock\include;..;%(AdditionalIncludeDirectories) + + false + EnableFastChecks + MultiThreadedDebugDLL + true + true + + Level4 + true + EditAndContinue + $(IntDir)Test.compile.pdb + + + + googletest\googletest\include;googletest\googlemock\include;..;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)Test.pdb + $(OutDir)Test.exe + mainCRTStartup + MachineX64 + + + + + %(AdditionalOptions) + MaxSpeed + googletest\googletest\include;googletest\googlemock\include;..;%(AdditionalIncludeDirectories) + + false + true + MultiThreadedDLL + true + true + + Level4 + true + ProgramDatabase + $(IntDir)Test.compile.pdb + + + + googletest\googletest\include;googletest\googlemock\include;..;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)Test.pdb + true + true + $(OutDir)Test.exe + mainCRTStartup + MachineX64 + + + + + + + + + + + + + {19EA680D-85FE-90BE-4E80-341EBA538DEF} + + + {EC34880F-5849-B0C0-21CB-53208D9EACF1} + + + {B686840F-229B-ACC0-EB1C-502057F0A8F1} + + + {30B03E7E-1C68-80CB-856F-592771461BBC} + + + + + + diff --git a/JSImpl/test/Test.vcxproj.filters b/JSImpl/test/Test.vcxproj.filters new file mode 100644 index 0000000..e1968c9 --- /dev/null +++ b/JSImpl/test/Test.vcxproj.filters @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/JSImpl/test/genie.lua b/JSImpl/test/genie.lua index 3bf1a4c..262ed18 100644 --- a/JSImpl/test/genie.lua +++ b/JSImpl/test/genie.lua @@ -15,8 +15,10 @@ project 'Test' 'gtest', 'gmock', 'gtest_main', - 'pthread', } + configuration 'Linux' + links 'pthread' + configuration '*' project 'gtest' kind 'StaticLib' diff --git a/JSImpl/test/gmock.vcxproj b/JSImpl/test/gmock.vcxproj new file mode 100644 index 0000000..d2dd518 --- /dev/null +++ b/JSImpl/test/gmock.vcxproj @@ -0,0 +1,138 @@ + + + + + Debug + x64 + + + Release + x64 + + + + {B686840F-229B-ACC0-EB1C-502057F0A8F1} + gmock + 8.1 + Win32Proj + + + + StaticLibrary + true + v140 + x64 + + + StaticLibrary + false + v140 + x64 + + + + + + + + + + + + + ..\build\bin\Debug\ + ..\build\obj\Debug\x64\Debug\gmock\ + gmock + .lib + + + ..\build\bin\Release\ + ..\build\obj\Release\x64\Release\gmock\ + gmock + .lib + + + + %(AdditionalOptions) + Disabled + googletest\googlemock;googletest\googlemock\include;googletest\googletest\include;%(AdditionalIncludeDirectories) + + false + EnableFastChecks + MultiThreadedDebugDLL + true + true + + Level4 + true + EditAndContinue + $(OutDir)gmock.pdb + + + + googletest\googlemock;googletest\googlemock\include;googletest\googletest\include;%(AdditionalIncludeDirectories) + + + $(OutDir)gmock.lib + MachineX64 + + + Windows + true + $(OutDir)gmock.pdb + + + + + %(AdditionalOptions) + MaxSpeed + googletest\googlemock;googletest\googlemock\include;googletest\googletest\include;%(AdditionalIncludeDirectories) + + false + true + MultiThreadedDLL + true + true + + Level4 + true + ProgramDatabase + $(OutDir)gmock.pdb + + + + googletest\googlemock;googletest\googlemock\include;googletest\googletest\include;%(AdditionalIncludeDirectories) + + + $(OutDir)gmock.lib + MachineX64 + + + Windows + true + $(OutDir)gmock.pdb + true + true + + + + + + + + + + + + + + + + + + + + + + + diff --git a/JSImpl/test/gmock.vcxproj.filters b/JSImpl/test/gmock.vcxproj.filters new file mode 100644 index 0000000..7ecdd12 --- /dev/null +++ b/JSImpl/test/gmock.vcxproj.filters @@ -0,0 +1,60 @@ + + + + + {E2296FC4-CEE1-B011-37E9-896D23C04B02} + + + {65B8EA6D-D124-A668-9A18-3EC60644C8D0} + + + {09CEDE5B-7590-12E6-BE40-A1722A42EBC3} + + + {65E05AA0-D1F8-41CA-9AA5-D163067DD663} + + + {92F8DC2D-FEB1-47D8-8711-62B2F3C9FD47} + + + + + googletest\googlemock\include\gmock + + + googletest\googlemock\include\gmock + + + googletest\googlemock\include\gmock + + + googletest\googlemock\include\gmock + + + googletest\googlemock\include\gmock + + + googletest\googlemock\include\gmock + + + googletest\googlemock\include\gmock + + + googletest\googlemock\include\gmock + + + googletest\googlemock\include\gmock + + + googletest\googlemock\include\gmock + + + googletest\googlemock\include\gmock + + + + + googletest\googlemock\src + + + diff --git a/JSImpl/test/gtest.vcxproj b/JSImpl/test/gtest.vcxproj new file mode 100644 index 0000000..85be299 --- /dev/null +++ b/JSImpl/test/gtest.vcxproj @@ -0,0 +1,137 @@ + + + + + Debug + x64 + + + Release + x64 + + + + {EC34880F-5849-B0C0-21CB-53208D9EACF1} + gtest + 8.1 + Win32Proj + + + + StaticLibrary + true + v140 + x64 + + + StaticLibrary + false + v140 + x64 + + + + + + + + + + + + + ..\build\bin\Debug\ + ..\build\obj\Debug\x64\Debug\gtest\ + gtest + .lib + + + ..\build\bin\Release\ + ..\build\obj\Release\x64\Release\gtest\ + gtest + .lib + + + + %(AdditionalOptions) + Disabled + googletest\googletest;googletest\googletest\include;%(AdditionalIncludeDirectories) + + false + EnableFastChecks + MultiThreadedDebugDLL + true + true + + Level4 + true + EditAndContinue + $(OutDir)gtest.pdb + + + + googletest\googletest;googletest\googletest\include;%(AdditionalIncludeDirectories) + + + $(OutDir)gtest.lib + MachineX64 + + + Windows + true + $(OutDir)gtest.pdb + + + + + %(AdditionalOptions) + MaxSpeed + googletest\googletest;googletest\googletest\include;%(AdditionalIncludeDirectories) + + false + true + MultiThreadedDLL + true + true + + Level4 + true + ProgramDatabase + $(OutDir)gtest.pdb + + + + googletest\googletest;googletest\googletest\include;%(AdditionalIncludeDirectories) + + + $(OutDir)gtest.lib + MachineX64 + + + Windows + true + $(OutDir)gtest.pdb + true + true + + + + + + + + + + + + + + + + + + + + + + diff --git a/JSImpl/test/gtest.vcxproj.filters b/JSImpl/test/gtest.vcxproj.filters new file mode 100644 index 0000000..3a35c75 --- /dev/null +++ b/JSImpl/test/gtest.vcxproj.filters @@ -0,0 +1,57 @@ + + + + + {E2296FC4-CEE1-B011-37E9-896D23C04B02} + + + {9B66EE6D-07D3-A968-D0C6-41C63CF2CBD0} + + + {3FA7DAF5-AB69-0E80-F419-9D0C601BE75D} + + + {9B646C1A-077D-5344-D029-E3DD3C01E8DD} + + + {7EFBCD74-EAB4-381F-7314-53F9DFCCEE8E} + + + + + googletest\googletest\include\gtest + + + googletest\googletest\include\gtest + + + googletest\googletest\include\gtest + + + googletest\googletest\include\gtest + + + googletest\googletest\include\gtest + + + googletest\googletest\include\gtest + + + googletest\googletest\include\gtest + + + googletest\googletest\include\gtest + + + googletest\googletest\include\gtest + + + googletest\googletest\include\gtest + + + + + googletest\googletest\src + + + diff --git a/JSImpl/test/gtest_main.vcxproj b/JSImpl/test/gtest_main.vcxproj new file mode 100644 index 0000000..0d93122 --- /dev/null +++ b/JSImpl/test/gtest_main.vcxproj @@ -0,0 +1,125 @@ + + + + + Debug + x64 + + + Release + x64 + + + + {30B03E7E-1C68-80CB-856F-592771461BBC} + gtest_main + 8.1 + Win32Proj + + + + StaticLibrary + true + v140 + x64 + + + StaticLibrary + false + v140 + x64 + + + + + + + + + + + + + ..\build\bin\Debug\ + ..\build\obj\Debug\x64\Debug\gtest_main\ + gtest_main + .lib + + + ..\build\bin\Release\ + ..\build\obj\Release\x64\Release\gtest_main\ + gtest_main + .lib + + + + %(AdditionalOptions) + Disabled + googletest\googletest;googletest\googletest\include;%(AdditionalIncludeDirectories) + + false + EnableFastChecks + MultiThreadedDebugDLL + true + true + + Level4 + true + EditAndContinue + $(OutDir)gtest_main.pdb + + + + googletest\googletest;googletest\googletest\include;%(AdditionalIncludeDirectories) + + + $(OutDir)gtest_main.lib + MachineX64 + + + Windows + true + $(OutDir)gtest_main.pdb + + + + + %(AdditionalOptions) + MaxSpeed + googletest\googletest;googletest\googletest\include;%(AdditionalIncludeDirectories) + + false + true + MultiThreadedDLL + true + true + + Level4 + true + ProgramDatabase + $(OutDir)gtest_main.pdb + + + + googletest\googletest;googletest\googletest\include;%(AdditionalIncludeDirectories) + + + $(OutDir)gtest_main.lib + MachineX64 + + + Windows + true + $(OutDir)gtest_main.pdb + true + true + + + + + + + + + + diff --git a/JSImpl/test/gtest_main.vcxproj.filters b/JSImpl/test/gtest_main.vcxproj.filters new file mode 100644 index 0000000..6ed8d96 --- /dev/null +++ b/JSImpl/test/gtest_main.vcxproj.filters @@ -0,0 +1,19 @@ + + + + + {E2296FC4-CEE1-B011-37E9-896D23C04B02} + + + {9B66EE6D-07D3-A968-D0C6-41C63CF2CBD0} + + + {3FA7DAF5-AB69-0E80-F419-9D0C601BE75D} + + + + + googletest\googletest\src + + + -- cgit v1.3.1-23-gd82d