using System;
using System.Diagnostics;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace agree
{
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///
///
///
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public partial class TypeMgr
{
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///
/// Regression test
///
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public void RegressionTest(TextWriter tw, String file)
{
if (!g.f_expanded_all)
throw new Exception();
#if false
// list of edges with out-mark == 0
foreach (var zzz in tm.feat_dict.Where(kvp => kvp.Value.ContainsKey(0)).Select(kvp => new { kvp.Key, x = kvp.Value[0] }))
{
Debug.WriteLine("{0} {1}", zzz.Key, zzz.x);
}
#endif
StringBuilder sb = new StringBuilder();
foreach (agree.Type t in AllTypes)
{
sb.Append(t.Definition.ToPathList("definition: " + t.Name));
}
foreach (agree.Type t in AllTypes)
{
if (t.m_flags.HasFlag(agree.Type.Flags.Expanded) && !t.Expanded.Equals(t.Definition))
sb.Append(t.Expanded.ToPathList("expanded: " + t.Name));
}
String f_gold = String.Format("regression-trees-{0}.txt", file);
String f_this = String.Format("regression-trees-latest-{0}.txt", file);
String s = sb.ToString();
if (!File.Exists(f_gold))
{
File.WriteAllText(f_gold, s);
tw.WriteLine("Wrote new regression trees");
}
else
{
File.WriteAllText(f_this, s);
if (File.ReadAllText(f_gold) != s)
{
tw.WriteLine("Regression test failed.");
throw new RegressionTestFailedException("Regression test failed");
}
else
tw.WriteLine("Regression test succeeded.");
}
}
public class RegressionTestFailedException : Exception
{
public RegressionTestFailedException(String msg)
: base(msg)
{
}
};
}
}