Use a context object instead of a singleton
This Cl replaces the TypeManager singleton with a context object.
Bug: tint:29
Change-Id: Ia662709db1b562c34955633977ce4363f28f238e
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/17780
Reviewed-by: David Neto <dneto@google.com>
diff --git a/src/reader/spirv/parser_impl_test_helper.h b/src/reader/spirv/parser_impl_test_helper.h
new file mode 100644
index 0000000..3e4b8d1
--- /dev/null
+++ b/src/reader/spirv/parser_impl_test_helper.h
@@ -0,0 +1,56 @@
+// Copyright 2020 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef SRC_READER_SPIRV_PARSER_IMPL_TEST_HELPER_H_
+#define SRC_READER_SPIRV_PARSER_IMPL_TEST_HELPER_H_
+
+#include <memory>
+#include <string>
+
+#include "gtest/gtest.h"
+#include "src/context.h"
+#include "src/reader/spirv/parser_impl.h"
+
+namespace tint {
+namespace reader {
+namespace spirv {
+
+class SpvParserTest : public testing::Test {
+ public:
+ SpvParserTest() = default;
+ ~SpvParserTest() = default;
+
+ void SetUp() { ctx_.type_mgr = &tm_; }
+
+ void TearDown() {
+ impl_ = nullptr;
+ ctx_.type_mgr = nullptr;
+ }
+
+ ParserImpl* parser(const std::vector<uint32_t>& input) {
+ impl_ = std::make_unique<ParserImpl>(ctx_, input);
+ return impl_.get();
+ }
+
+ private:
+ std::unique_ptr<ParserImpl> impl_;
+ Context ctx_;
+ TypeManager tm_;
+};
+
+} // namespace spirv
+} // namespace reader
+} // namespace tint
+
+#endif // SRC_READER_WGSL_PARSER_IMPL_TEST_HELPER_H_