コード例 #1
0
        public void WriteRunMethod()
        {
            string recordingWasMadeOn = _reader.GetTypeRecordingWasMadeOn();

            _output.AppendFormatLine("\t\tprivate void Run(string filename)");
            _output.AppendLine("\t\t{");

            _output.AppendFormatLine("\t\t\tLoadRecording(filename);");

            if (!_reader.IsStaticMethod())
            {
                _output.AppendFormatLine("\t\t\ttarget = new {0}();", recordingWasMadeOn);
                _output.AppendLine();
            }

            string parameterList = _parameterWriter.WriteInputParameters();

            _parameterWriter.WriteOutputParameters();

            if (_reader.IsVoidMethod())
            {
                _output.AppendFormatLine("\t\t\ttarget.{0}({1});", _reader.GetMethodName(), parameterList);
            }
            else
            {
                _output.AppendFormatLine("\t\t\texpected = ({0})GetReturnValue();", _reader.GetTypeOfReturnValue());
                if (_reader.IsStaticMethod())
                {
                    _output.AppendFormatLine("\t\t\tactual = {0}.{1}({2});", recordingWasMadeOn, _reader.GetMethodName(), parameterList);
                }
                else
                {
                    _output.AppendFormatLine("\t\t\tactual = target.{0}({1});", _reader.GetMethodName(), parameterList);
                }
            }

            _output.AppendLine();

            _output.AppendLine("\t\t\tConfigureComparison(filename);");

            var parameters = _reader.GetInputParametersMetadata();

            parameters.ForEach(p => _output.AppendFormatLine("\t\t\tCompareObjects({0}Input, {0}Output);", p.Name));

            if (!_reader.IsVoidMethod())
            {
                _output.AppendFormatLine("\t\t\tCompareObjects(expected, actual);");
            }

            _output.AppendLine("\t\t}");
            _output.AppendLine();
        }