private void ButtonRunTest_Click(object sender, RoutedEventArgs e)
{
List<Tuple<bool,bool,bool,bool>> inputs = new List<Tuple<bool, bool, bool, bool>>();
inputs.Add(new Tuple<bool, bool, bool, bool>(true,true,true,true));
inputs.Add(new Tuple<bool, bool, bool, bool>(true,true,true,false));
inputs.Add(new Tuple<bool, bool, bool, bool>(true,true,false,true));
inputs.Add(new Tuple<bool, bool, bool, bool>(true,true,false,false));
inputs.Add(new Tuple<bool, bool, bool, bool>(true,false,true,true));
inputs.Add(new Tuple<bool, bool, bool, bool>(true,false,true,false));
inputs.Add(new Tuple<bool, bool, bool, bool>(true,false,false,true));
inputs.Add(new Tuple<bool, bool, bool, bool>(true,false,false,false));
inputs.Add(new Tuple<bool, bool, bool, bool>(false,true,true,true));
inputs.Add(new Tuple<bool, bool, bool, bool>(false,true,true,false));
inputs.Add(new Tuple<bool, bool, bool, bool>(false,true,false,true));
inputs.Add(new Tuple<bool, bool, bool, bool>(false,true,false,false));
inputs.Add(new Tuple<bool, bool, bool, bool>(false,false,true,true));
inputs.Add(new Tuple<bool, bool, bool, bool>(false,false,true,false));
inputs.Add(new Tuple<bool, bool, bool, bool>(false,false,false,true));
inputs.Add(new Tuple<bool, bool, bool, bool>(false,false,false,false));
List<string> combinations = new List<string>();
//combinations.Add("A");
//combinations.Add("AB");
//combinations.Add("ABC");
//combinations.Add("ACB");
//combinations.Add("AC");
//combinations.Add("ACB");
//combinations.Add("AD");
//combinations.Add("ADB");
//combinations.Add("ADC");
//combinations.Add("B");
//combinations.Add("BA");
//combinations.Add("BAC");
//combinations.Add("BCA");
//combinations.Add("BC");
//combinations.Add("BCA");
//combinations.Add("AD");
//combinations.Add("BDA");
//combinations.Add("BDC");
//combinations.Add("C");
//combinations.Add("CA");
//combinations.Add("CAB");
//combinations.Add("CBA");
//combinations.Add("CB");
//combinations.Add("CBA");
//combinations.Add("CD");
//combinations.Add("CDA");
//combinations.Add("CDB");
//combinations.Add("D");
//combinations.Add("DA");
//combinations.Add("DAB");
//combinations.Add("DB");
//combinations.Add("DBA");
//combinations.Add("DBC");
//combinations.Add("DC");
//combinations.Add("DCA");
//combinations.Add("DCB");
combinations.Add("ABCD");
combinations.Add("ABDC");
combinations.Add("ACBD");
combinations.Add("ACDB");
combinations.Add("ADBC");
combinations.Add("ADCB");
combinations.Add("BACD");
combinations.Add("BADC");
combinations.Add("BCAD");
combinations.Add("BCDA");
combinations.Add("BDAC");
combinations.Add("BDCA");
combinations.Add("CABD");
combinations.Add("CADB");
combinations.Add("CBAD");
combinations.Add("CBDA");
combinations.Add("CDAB");
combinations.Add("CDBA");
combinations.Add("DABC");
combinations.Add("DACB");
combinations.Add("DBAC");
combinations.Add("DBCA");
combinations.Add("DCAB");
combinations.Add("DCBA");
WriteFiles(combinations, inputs);
}
private void WriteFiles(List<string> combinations, List<Tuple<bool,bool,bool,bool>> inputs)
{
List<string> solutions = new List<string>();
for (int i = 0; i < inputs.Count; i++)
{
bool a = inputs[i].Item1;
bool b = inputs[i].Item2;
bool c = inputs[i].Item3;
bool d = inputs[i].Item4;
string curKey = inputs[i].Item1.ToString() + inputs[i].Item2.ToString() + inputs[i].Item3.ToString() + inputs[i].Item4.ToString();
foreach (var curCombo in combinations)
{
var curOrder = curCombo.Trim().ToUpper().ToCharArray();
foreach (var x in curOrder)
{
if (x.Equals('A')) SwitchA();
else if (x.Equals('B')) SwitchB();
else if (x.Equals('C')) SwitchC();
else if (x.Equals('D')) SwitchD();
else throw new NotSupportedException("Char was: " + x);
}
if (a && b && c && d)
{
solutions.Add(curKey + ": " + curCombo);
}
}
}
StreamWriter fileWriter = new StreamWriter("c:\\TMP\\logictest.txt");
foreach (string x in solutions)
{
fileWriter.WriteLine(x);
}
fileWriter.Close();
}
private void SwitchA(out bool a, out bool b, out bool c, out bool d)
{
a = true;
b = false;
c = false;
d = false;
}
private void SwitchB(out bool b, out bool c, out bool d)
{
b = true;
c = false;
d = false;
}
private void SwitchC(out bool c, out bool d)
{
c = true;
d = false;
}
private void SwitchD(out bool d)
{
d = true;
}