public void TestParse_SimpleExpression_PolicyRef_ValidateTokens()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            using (Stream stream = "X509.Algorithm = 1.2.840.113549.1.1.5".ToStream())
            {
                IList<SimpleTextV1LexiconPolicyParser.TokenTypeAssociation> tokens = parser.ParseToTokens(stream);
                tokens.Count.Should().Be(3);
            }
        }
        public void TestParse_SimpleExpression_ValidateTokens()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            using (Stream stream = File.OpenRead("./resources/policies/simpleLexiconSamp1.txt"))
            {
                IList<SimpleTextV1LexiconPolicyParser.TokenTypeAssociation> tokens = parser.ParseToTokens(stream);
                tokens.Count.Should().Be(11);
            }
        }
        public void TestParse_CertificateStruct_ValidateTokens()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            using (Stream stream = File.OpenRead("./resources/policies/lexiconWithCertificateStruct.txt"))
            {
                IList<SimpleTextV1LexiconPolicyParser.TokenTypeAssociation> tokens = parser.ParseToTokens(stream);
                tokens.Count.Should().Be(3);
                tokens.First().GetTokenType().Should().Be(TokenType.CERTIFICATE_REFERENCE_EXPRESSION);
            }
        }
        public void TestParse_LogicalAndOperator_ValidateSingleTokens()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            using (Stream stream = File.OpenRead("./resources/policies/logicalAndOperator.txt"))
            {
                IList<SimpleTextV1LexiconPolicyParser.TokenTypeAssociation> tokens = parser.ParseToTokens(stream);
                tokens.Count.Should().Be(1);
                tokens.First().GetToken().Should().Be("&&");
            }
        }
        public void testParse_requiredCertField_validateTokens()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            using (Stream stream = "X509.TBS.EXTENSION.SubjectKeyIdentifier+ = 1.3.2.3".ToStream())
            {
                IList<SimpleTextV1LexiconPolicyParser.TokenTypeAssociation> tokens = parser.ParseToTokens(stream);
                tokens.Count.Should().Be(3);
            }
        }
        public void TestExtensionBasicContraint_CA_AssertTrue()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();
            using (Stream stream = ("X509.TBS.EXTENSION.BasicConstraints.CA = true").ToStream())
            {
                IList<SimpleTextV1LexiconPolicyParser.TokenTypeAssociation> tokens = parser.ParseToTokens(stream);
                tokens.Count.Should().Be(3);
            }

            using (Stream stream = ("X509.TBS.EXTENSION.BasicConstraints.CA = true").ToStream())
            {
                IPolicyExpression expression = parser.Parse(stream);
                expression.Should().BeAssignableTo<OperationPolicyExpression>();

                var operationPolicyExpression = expression as OperationPolicyExpression;
                operationPolicyExpression.GetOperands().Count.Should().Be(2);
               
            }
        }
        public void testParse_tbs_serialnumber_validateTokens()
        {
            var parser = new SimpleTextV1LexiconPolicyParser();

            using (Stream stream = "X509.TBS.SerialNumber = f74f1c4fe4e1762e".ToStream())
            {
                IList<SimpleTextV1LexiconPolicyParser.TokenTypeAssociation> tokens = parser.ParseToTokens(stream);
                tokens.Count.Should().Be(3);
            }
        }