public void ProjectTryResolveTest()
        {
            var man = new FakeProjectManager();

            var project1 = new MyFakeTypeProject(typeof(string));
            var project2 = new MyFakeNameProject(typeof(string), "string");

            man.Register(project1);
            man.Register(project2);

            var result3 = man.TryResolve(typeof(string), out var project3);
            var result4 = man.TryResolve(typeof(string), "string", out var project4);

            result3.ShouldBeTrue();
            result4.ShouldBeTrue();

            project3.ShouldNotBeNull();
            project4.ShouldNotBeNull();

            project3.Class.ShouldBe(ProjectClass.Typed);
            project4.Class.ShouldBe(ProjectClass.Named);

            project3.Type.ShouldBe(typeof(string));
            project4.Type.ShouldBe(typeof(string));

            project3.Name.ShouldBe("System.String");
            project4.Name.ShouldBe("string");
        }
        public void ProjectRegisterTest()
        {
            var man = new FakeProjectManager();

            var project1 = new MyFakeTypeProject(typeof(string));
            var project2 = new MyFakeNameProject(typeof(string), "string");

            man.Register(project1);
            man.Register(project2);

            man._typedProjects.Keys.Count.ShouldBe(1);
            man._namedTypeProjects.Keys.Count.ShouldBe(1);
        }
        public void ProjectResolveWithUnregisterTypeTest()
        {
            var man = new FakeProjectManager();

            var project1 = new MyFakeTypeProject(typeof(string));
            var project2 = new MyFakeNameProject(typeof(string), "string");

            man.Register(project1);
            man.Register(project2);

            var project3 = man.Resolve(typeof(int));
            var project4 = man.Resolve(typeof(int), "int");

            project3.ShouldBeNull();
            project4.ShouldBeNull();
        }