public void ProrgamOperateTest() { string[] catalogFileNames = { "無効ユースケースカタログ.yaml", }; var path = Path.GetFullPath("."); foreach (var catalogFileName in catalogFileNames) { var errorOutput = string.Empty; using (var writer = new StringWriter()) { System.Console.SetError(writer); string[] args = { "TestSuite", "--input:" + catalogFileName, }; Assert.IsFalse(Program.Operate(args, UseCaseTranslatorOperationType.ValueOf(args[0]))); errorOutput = writer.ToString(); } Assert.IsFalse(string.IsNullOrWhiteSpace(errorOutput)); Assert.IsTrue(errorOutput == "シナリオセットファイル\"無効YAML書式検証シナリオセット.yaml\"の書式に誤りがあります: (Line: 15, Col: 11, Idx: 258) - (Line: 15, Col: 36, Idx: 283): Anchor 'DuplicateAnchor' already defined\r\n"); } }
// // クラスメソッド // /// <summary> /// 操作する /// </summary> /// <param name="args">引数</param> /// <param name="operationType">操作種別</param> /// <returns>操作の成否</returns> public static bool Operate(string[] args, UseCaseTranslatorOperationType operationType) { Contract.Requires(args != null); var success = false; try { var tuple = operationType.GetOperator <UseCaseTranslatorOperator>(args.Skip(1).Select(arg => arg.Trim('"'))); if (tuple.Item2.Any()) { foreach (var invalidParameter in tuple.Item2) { Console.WriteLine(Resources.Resources.Message_Format_InvalidParameter, invalidParameter); } return(false); } var op = tuple.Item1; if (op == null) { HelpReporter.ReportHelp(); return(false); } if (op.CanOperate()) { op.Operate(); success = true && (op is HelpReporter) == false; } } catch (ApplicationException e) { Console.Error.WriteLine(e.Message); } return(success); }
public void ValueOfTest() { foreach (var typeLiteral in validTypeLiterals) { Assert.IsNotNull(UseCaseTranslatorOperationType.ValueOf(typeLiteral)); } Assert.IsNull(UseCaseTranslatorOperationType.ValueOf("InvalidTypeLiteral")); }
public void GetOperatorTest() { string[] arguments = { "--input:UseCaseCatalog.yaml", "-a:UseCaseCatalogTemplate.xlsx", "-output:C:\\", }; foreach (var typeLiteral in validTypeLiterals) { Assert.IsNotNull(UseCaseTranslatorOperationType.ValueOf(typeLiteral).GetOperator <UseCaseTranslatorOperator>(arguments)); } }
/// <summary> /// エントリ /// </summary> /// <param name="args">コマンドライン引数</param> static void Main(string[] args) { if (args.Length == 0 || string.IsNullOrWhiteSpace(args[0])) { HelpReporter.ReportHelp(); Environment.Exit(1); } var operationType = UseCaseTranslatorOperationType.ValueOf(args[0]); if (operationType == null) { HelpReporter.ReportHelp(); Environment.Exit(1); } Environment.Exit(Operate(args, operationType) == false ? 1 : 0); }