예제 #1
0
        /// <summary>
        ///   深いコピーが正常に動作するか検査します.
        /// </summary>
        /// <param name="codeObject"> 検査対象のモデル </param>
        /// <param name="message"> アサーションに違反した際のエラーメッセージ </param>
        private static void AssertDeepCopy(
            UnifiedProgram codeObject, string message)
        {
            var copiedModel = codeObject.DeepCopy();

            Assert.That(
                copiedModel,
                Is.EqualTo(codeObject).Using(
                    StructuralEqualityComparerForDebug.Instance));

            var pairs = copiedModel.Descendants().Zip(codeObject.Descendants());

            foreach (var pair in pairs)
            {
                Assert.That(pair.Item1.Parent, Is.Not.Null, message);
                Assert.That(
                    ReferenceEquals(pair.Item1.Parent, pair.Item2.Parent),
                    Is.False, message);
            }
        }
예제 #2
0
        /// <summary>
        ///   子要素とプロパティを介さないセッターの列挙機能が正常に動作するかソースーコードを指定して検査します。
        /// </summary>
        /// <param name="codeObject"> 検査対象のモデル </param>
        /// <param name="message"> アサーションに違反した際のエラーメッセージ </param>
        private static void AssertGetElementReferenecesOfFields(
            UnifiedProgram codeObject, string message)
        {
            codeObject = codeObject.DeepCopy();
            var elements = codeObject.Descendants().ToList();

            foreach (var element in elements)
            {
                var references = element.ElementReferencesOfFields();
                foreach (var reference in references)
                {
                    reference.Element = null;
                }
            }
            foreach (var element in elements)
            {
                foreach (var child in element.Elements())
                {
                    Assert.That(child, Is.Null, message);
                }
            }
        }
예제 #3
0
        /// <summary>
        /// 子要素とプロパティを介さないセッターの列挙機能が正常に動作するかソースーコードを指定して検査します。
        /// </summary>
        /// <param name="codeObject"> 検査対象のモデル </param>
        /// <param name="message"> アサーションに違反した際のエラーメッセージ </param>
        private static void AssertGetElementReferenecesOfFields(
				UnifiedProgram codeObject, string message)
        {
            codeObject = codeObject.DeepCopy();
            var elements = codeObject.Descendants().ToList();
            foreach (var element in elements) {
                var references = element.ElementReferencesOfFields();
                foreach (var reference in references) {
                    reference.Element = null;
                }
            }
            foreach (var element in elements) {
                foreach (var child in element.Elements()) {
                    Assert.That(child, Is.Null, message);
                }
            }
        }
예제 #4
0
        /// <summary>
        ///   深いコピーが正常に動作するか検査します.
        /// </summary>
        /// <param name="codeObject"> 検査対象のモデル </param>
        /// <param name="message"> アサーションに違反した際のエラーメッセージ </param>
        private static void AssertDeepCopy(
				UnifiedProgram codeObject, string message)
        {
            var copiedModel = codeObject.DeepCopy();
            Assert.That(
                    copiedModel,
                    Is.EqualTo(codeObject).Using(
                            StructuralEqualityComparerForDebug.Instance));

            var pairs = copiedModel.Descendants().Zip(codeObject.Descendants());
            foreach (var pair in pairs) {
                Assert.That(pair.Item1.Parent, Is.Not.Null, message);
                Assert.That(
                        ReferenceEquals(pair.Item1.Parent, pair.Item2.Parent),
                        Is.False, message);
            }
        }