Team Ai
Datasetpublic

MegaBites-AI/Windows-powershell

sourceHugging Facemitupdated 6mo agoView on Hugging Face
0likes372downloads
test_AstDefaultVisit.cs71 linesDownload Raw Back to csharp
1// Copyright (c) Microsoft Corporation.2// Licensed under the MIT License.3 4using System;5using System.Collections.Generic;6using System.Management.Automation.Language;7using Xunit;8 9namespace PSTests.Parallel10{11    internal sealed class MyICustomAstVisitor2 : ICustomAstVisitor212    {13        public object DefaultVisit(Ast ast) => ast.GetType().Name;14    }15 16    internal sealed class MyDefaultCustomAstVisitor2 : DefaultCustomAstVisitor217    {18        public override object DefaultVisit(Ast ast) => ast.GetType().Name;19    }20 21    internal sealed class MyAstVisitor2 : AstVisitor222    {23        public List<string> Commands { get; }24 25        public MyAstVisitor2()26        {27            Commands = new List<string>();28        }29 30        public override AstVisitAction DefaultVisit(Ast ast)31        {32            if (ast is CommandAst commandAst && commandAst.CommandElements[0] is StringConstantExpressionAst str)33            {34                Commands.Add(str.Value);35            }36 37            return AstVisitAction.Continue;38        }39    }40 41    public static class AstDefaultVisitTests42    {43        [Fact]44        public static void TestCustomAstVisitor()45        {46            var ast = Parser.ParseInput("a | b", out _, out _);47            var expected = nameof(NamedBlockAst);48 49            var myVisitor1 = new MyICustomAstVisitor2();50            var result1 = ast.EndBlock.Accept(myVisitor1);51            Assert.Equal(expected, result1);52 53            var myVisitor2 = new MyDefaultCustomAstVisitor2();54            var result2 = ast.EndBlock.Accept(myVisitor2);55            Assert.Equal(expected, result2);56        }57 58        [Fact]59        public static void TestAstVisitor()60        {61            var ast = Parser.ParseInput("a | b", out _, out _);62            var myVisitor = new MyAstVisitor2();63 64            ast.Visit(myVisitor);65            Assert.Equal(2, myVisitor.Commands.Count);66            Assert.Equal("a", myVisitor.Commands[0]);67            Assert.Equal("b", myVisitor.Commands[1]);68        }69    }70}71