public void CompareTest()
        {
            var cc = new ChangingComparer();

            for (int i = 0; i < 1000; i++)
            {
                var(_, t) = GetRandomDerivation();
                var lineCount          = random.Next(1, 10);
                List <Core.YinYang> r1 = new List <Core.YinYang>();
                List <Core.YinYang> r2 = new List <Core.YinYang>();
                List <int>          c  = new List <int>();
                for (int j = 0; j < lineCount; j++)
                {
                    var line = random.Next(0, 1);
                    r1.Add((Core.YinYang)line);
                    if (t.Contains(j))
                    {
                        r2.Add((Core.YinYang)Convert.ToInt32(!Convert.ToBoolean(line)));
                        c.Add(j);
                    }
                    else
                    {
                        r2.Add((Core.YinYang)line);
                    }
                }
                Assert.IsTrue(cc.Compare(new Core.Painting(r2), new Core.Painting(r1))
                              .SequenceEqual(c));
                Assert.IsFalse(cc.Compare(new Core.Painting(r1).ChangeLines(0), new Core.Painting(r2))
                               .SequenceEqual(c));
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 获取变爻的序号。
 /// Get the indexes of the changed lines.
 /// </summary>
 /// <param name="obj">
 /// 要判断的目标卦画。
 /// The object painting to judge.
 /// </param>
 /// <param name="basis">
 /// 作为判断基础的卦画。
 /// The paintings to be used as the comparing basis.
 /// </param>
 /// <returns>
 /// 判断结果。
 /// The result.
 /// </returns>
 /// <exception cref="ArgumentNullException">
 /// <paramref name="basis"/> 或 <paramref name="obj"/> 是 <c>null</c> 。
 /// <paramref name="basis"/> or <paramref name="obj"/> is <c>null</c>.
 /// </exception>
 public static int[] GetDifferentLinesBetween(
     this Core.Painting obj, Core.Painting basis)
 {
     if (obj is null)
     {
         throw new ArgumentNullException(nameof(obj));
     }
     if (basis is null)
     {
         throw new ArgumentNullException(nameof(basis));
     }
     return(changingComparer.Compare(basis, obj));
 }