コード例 #1
0
        public void Generate()
        {
            // arrange
            var generator = Substitute.For <IComponentGenerator>();

            generator.Generate(
                Arg.Any <string>(),
                Arg.Any <string>(),
                Arg.Any <string>(),
                Arg.Any <ParameterCollection>(),
                Arg.Any <ICircuitContext>()).Returns(x => new Resistor((string)x[0]));

            var mapper = Substitute.For <IMapper <IComponentGenerator> >();

            Dictionary <string, IComponentGenerator> dict = new Dictionary <string, IComponentGenerator>();

            dict["R"] = generator;
            mapper.GetEnumerator().Returns(dict.GetEnumerator());

            var readingContext = Substitute.For <ICircuitContext>();

            readingContext.CaseSensitivity.Returns(new SpiceNetlistCaseSensitivitySettings());
            readingContext.NameGenerator.GenerateObjectName(Arg.Any <string>()).Returns(x => x[0].ToString());

            var resultService = Substitute.For <IResultService>();

            readingContext.Result.Returns(resultService);

            // act
            ComponentReader reader    = new ComponentReader(mapper);
            var             component = new Models.Netlist.Spice.Objects.Component(
                "Ra1",
                new ParameterCollection(new List <Parameter>()
            {
                new ValueParameter("0"),
                new ValueParameter("1"),
                new ValueParameter("12.3"),
            }), null);

            reader.Read(component, readingContext);

            // assert
            generator.Received().Generate("Ra1", "Ra1", "R", Arg.Any <ParameterCollection>(), Arg.Any <ICircuitContext>());
            resultService.Received().AddEntity(Arg.Is <Entity>((Entity e) => e.Name == "Ra1"));
        }