92 lines
3.3 KiB
C#
92 lines
3.3 KiB
C#
using KssSmaPlaLib.AutoTest.Script.Models;
|
|
using KssSmaPlaLib.AutoTest.Script.Parse;
|
|
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
|
|
namespace KssSmaPlaLib.AutoTest.Script.Load
|
|
{
|
|
/// <summary>
|
|
/// UIテストスクリプトローダー
|
|
/// </summary>
|
|
public static class LoadTryUxer
|
|
{
|
|
/// <summary>
|
|
/// スクリプトファイルパス
|
|
/// </summary>
|
|
private const string UITEST_SCRIPT_FILE_PATH = "./test_script.ini";
|
|
|
|
/// <summary>
|
|
/// スクリプトロード
|
|
/// </summary>
|
|
/// <param name="scriptDto">[出力]テストスクリプトデータ</param>
|
|
/// <param name="resultMessage">[出力]メッセージ</param>
|
|
/// <returns>成否</returns>
|
|
public static bool TryLoad(out StepInfoDTO stepInfo, out string resultMessage)
|
|
{
|
|
stepInfo = new StepInfoDTO();
|
|
resultMessage = string.Empty;
|
|
|
|
try
|
|
{
|
|
if (!File.Exists(UITEST_SCRIPT_FILE_PATH))
|
|
{
|
|
resultMessage = "スクリプトファイルが存在しません。";
|
|
return false;
|
|
}
|
|
|
|
var lines = File.ReadAllLines(UITEST_SCRIPT_FILE_PATH, System.Text.Encoding.GetEncoding("shift_jis"));
|
|
|
|
stepInfo.Description = "なんか詳細...(笑)";
|
|
stepInfo.InitialStepName = "なんか初期ステップ名...(笑)";
|
|
|
|
// ここでDTOにパース(例:セクションごとに分ける、キーと値を読み込むなど)
|
|
// ↓仮の処理(実際はINIパーサーCLがあると別府)
|
|
foreach (var line in lines)
|
|
{
|
|
if (line.StartsWith("#") ||
|
|
line.StartsWith(";") ||
|
|
string.IsNullOrWhiteSpace(line))
|
|
continue;
|
|
|
|
// 左辺と右辺分離
|
|
var parts = line.Split(new[] { '=' }, 2);
|
|
|
|
// 要素数違いは飛ばす
|
|
if (parts.Length != 2) continue;
|
|
|
|
// 要素取得
|
|
var no = parts[0].Trim();
|
|
var text = parts[1].Trim();
|
|
|
|
// No重複チェック
|
|
if (stepInfo.StepList.Any(m => m.StepNo == no))
|
|
{
|
|
resultMessage = $"ステップNoが重複しています。[ステップNo:{no}]";
|
|
return false;
|
|
}
|
|
|
|
// RawDTO
|
|
var raw = new StepDTO(no, text);
|
|
|
|
// バリデーションと変換
|
|
if (!ParseTryUxer.TryParse(raw, out var parsed, out string messageForMe))
|
|
{
|
|
resultMessage = $"ステップエラーです。[行:{line},エラー内容:{messageForMe}";
|
|
return false;
|
|
}
|
|
|
|
// 正常:リストに追加
|
|
stepInfo.StepList.Add(parsed);
|
|
}
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
resultMessage = $"スクリプトロードに失敗しました。[エラー内容:{ex.Message}]";
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|