コード例 #1
0
ファイル: ExpressionTreeTests.cs プロジェクト: lulzzz/Adrien
        public void TreeNodeFollowsSawmillSpec()
        {
            var A = Tensor.ThreeD("A", (2, 2, 2), "a", out Index a, out Index b, out Index c)
                    .With(out Tensor B)
                    .With(out Tensor C);
            ExpressionTree       tree     = (A[a, b] * B[b, a]).ToTree();
            Children <ITreeNode> children = tree.Right.GetChildren();

            Assert.Equal(tree.Right.Left, children.First);
            Assert.Equal(tree.Right.Right, children.Second);


            OperatorNode left  = tree.CreateOperatorNode(tree.Right as OperatorNode, TensorOp.NoOp);
            OperatorNode right = tree.CreateOperatorNode(tree.Right as OperatorNode, TensorOp.Sub);

            tree.Right.SetChildren(Children.Two <ITreeNode>(left, right));
            children = tree.Right.GetChildren();
            Assert.Equal(left, children.First);
            Assert.Equal(right, children.Second);
            tree.Right.SetChildren(Children.Two <ITreeNode>(right, left)).SetChildren(Children.Two <ITreeNode>(right, left));

            children = tree.Right.GetChildren();
            Assert.Equal(right, children.First);
            Assert.Equal(left, children.Second);
        }