// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Collections.Generic; namespace Microsoft.DotNet.Watcher.Tools.Tests { public class TestProjectGraph { private readonly TemporaryDirectory _directory; private Action _onCreate; private Dictionary _projects = new Dictionary(); public TestProjectGraph(TemporaryDirectory directory) { _directory = directory; } public void OnCreate(Action onCreate) { _onCreate = onCreate; } public TemporaryCSharpProject Find(string projectName) => _projects.ContainsKey(projectName) ? _projects[projectName] : null; public TemporaryCSharpProject GetOrCreate(string projectName) { TemporaryCSharpProject sourceProj; if (!_projects.TryGetValue(projectName, out sourceProj)) { sourceProj = _directory.SubDir(projectName).WithCSharpProject(projectName); _onCreate?.Invoke(sourceProj); _projects.Add(projectName, sourceProj); } return sourceProj; } } }