public DatabaseObjectMultipartName(string?currentDatabase, string?name)
    {
        if (name != null)
        {
            var       parser = new IdentifierParser(new StringReader(name));
            string?[] parts  = parser.Parse().ToArray();

            var i = parts.Length - 1;
            var commandBuilder = new SqlCommandBuilder();

            if (i >= 0)
            {
                Name = parts[i];
                i--;

                if (i >= 0)
                {
                    Schema = parts[i];
                    i--;

                    if (i >= 0)
                    {
                        Database = parts[i];
                        i--;

                        if (i >= 0)
                        {
                            _server = parts[i];
                        }
                    }
                }
            }
        }

        if (Database == null)
        {
            Database = currentDatabase;
        }

        if (string.IsNullOrEmpty(Schema))
        {
            Schema = null;
        }

        if (Name != null)
        {
            var length = Name.Length;

            if (length > 0 && Name[0] == '[')
            {
                Name = Name.Substring(1);
                length--;
            }

            if (length > 0 && Name[length - 1] == ']')
            {
                Name = Name.Substring(0, length - 1);
            }
        }
    }
        public void Parse_empty_string_returns_empty_list()
        {
            var parser = new IdentifierParser();
            var result = parser.Parse("");

            Assert.IsNotNull(result);
            Assert.IsFalse(result.Any());
        }
Example #3
0
        public void Identifer_CanContainQuestionMark_IsValidIdentifier()
        {
            IdentifierParser parser = new IdentifierParser();
            string           token  = "ab?";

            IdentifierNode node = (IdentifierNode)parser.Parse(token);

            Assert.AreEqual(token, node.Name);
        }
Example #4
0
        public void Identifer_VariableArgument_IsValidIdentifier()
        {
            IdentifierParser parser = new IdentifierParser();
            string           token  = "...";

            IdentifierNode node = (IdentifierNode)parser.Parse(token);

            Assert.AreEqual(token, node.Name);
        }
        public void Parse_ShouldParseLocalIdentifier()
        {
            var expected = new LocalIdentifier("123");
            var actual   = IdentifierParser.Parse("lcl|123") as LocalIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Value, actual.Value);
        }
Example #6
0
        public void Identifer_MultipleCharacters_IsValidIdentifier()
        {
            IdentifierParser parser = new IdentifierParser();
            string           token  = "ab";

            IdentifierNode node = (IdentifierNode)parser.Parse(token);

            Assert.AreEqual(token, node.Name);
        }
Example #7
0
        public void Identifer_CannotContain_SingleNumber()
        {
            IdentifierParser parser = new IdentifierParser();
            string           token  = "2";

            IdentifierNode node = (IdentifierNode)parser.Parse(token);

            Assert.IsNull(node);
        }
        public void Parse_ShouldParseImportIdIdentifier()
        {
            var expected = new ImportIdIdentifier(123);
            var actual   = IdentifierParser.Parse("gim|123") as ImportIdIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Value, actual.Value);
        }
        public void Parse_ShouldParseIntegratedDatabaseIdentifier()
        {
            var expected = new IntegratedDatabaseIdentifier(123);
            var actual   = IdentifierParser.Parse("gi|123") as IntegratedDatabaseIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Value, actual.Value);
        }
Example #10
0
        public void Identifer_CannotStartWithDash()
        {
            IdentifierParser parser = new IdentifierParser();
            string           token  = "-";

            IdentifierNode node = (IdentifierNode)parser.Parse(token);

            Assert.AreEqual(token, node.Name);
        }
        public void Parse_ShouldParseBackboneSeqIdIdentifier()
        {
            var expected = new BackboneSeqIdIdentifier(123);
            var actual   = IdentifierParser.Parse("bbs|123") as BackboneSeqIdIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Value, actual.Value);
        }
Example #12
0
        public void Identifer_Operator_IsValidIdentifer()
        {
            IdentifierParser parser = new IdentifierParser();
            string           token  = "<=";

            IdentifierNode node = (IdentifierNode)parser.Parse(token);

            Assert.AreEqual(token, node.Name);
        }
Example #13
0
        public void Identifer_CannotContain_CloseParenthesis()
        {
            IdentifierParser parser = new IdentifierParser();
            string           token  = ")";

            IdentifierNode node = (IdentifierNode)parser.Parse(token);

            Assert.IsNull(node);
        }
        public void Parse_ShouldParseTrEMBLIdentifier()
        {
            var expected = new TrEMBLIdentifier("Q90RT2", "Q90RT2_9HIV1");
            var actual   = IdentifierParser.Parse("tr|Q90RT2|Q90RT2_9HIV1") as TrEMBLIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Accession, actual.Accession);
            Assert.AreEqual(expected.Name, actual.Name);
        }
        public void Parse_word()
        {
            var parser = new IdentifierParser();
            var result = parser.Parse("word").ToArray();

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(IdentifierPartTypeEnum.Word, result[0].Type);
            Assert.AreEqual("word", result[0].Value);
        }
        public void Parse_ShouldParsePDBIdentifier()
        {
            var expected = new PDBIdentifier("1I4L", "D");
            var actual   = IdentifierParser.Parse("pdb|1I4L|D") as PDBIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Entry, actual.Entry);
            Assert.AreEqual(expected.Chain, actual.Chain);
        }
        public void Parse_ShouldParsePRFIdentifier()
        {
            var expected = new PRFIdentifier("ACCESSION", "0806162C");
            var actual   = IdentifierParser.Parse("prf|ACCESSION|0806162C") as PRFIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Accession, actual.Accession);
            Assert.AreEqual(expected.Name, actual.Name);
        }
        public void Parse_ShouldParseGeneralDatabaseReferenceIdentifier()
        {
            var expected = new GeneralDatabaseReferenceIdentifier("taxon", "9606");
            var actual   = IdentifierParser.Parse("gnl|taxon|9606") as GeneralDatabaseReferenceIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Database, actual.Database);
            Assert.AreEqual(expected.Value, actual.Value);
        }
        public void Parse_ShouldParseDDBJIdentifier()
        {
            var expected = new DDBJIdentifier("BAC85684.1", "1");
            var actual   = IdentifierParser.Parse("dbj|BAC85684.1|1") as DDBJIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Accession, actual.Accession);
            Assert.AreEqual(expected.Locus, actual.Locus);
        }
        public void Parse_ShouldParseThirdPartyGenBankIdentifier()
        {
            var expected = new ThirdPartyGenBankIdentifier("BK003456", "NAME");
            var actual   = IdentifierParser.Parse("tpg|BK003456|NAME") as ThirdPartyGenBankIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Accession, actual.Accession);
            Assert.AreEqual(expected.Name, actual.Name);
        }
        public void Parse_ShouldParseThirdPartyEMBLIdentifier()
        {
            var expected = new ThirdPartyEMBLIdentifier("BN000123", "NAME");
            var actual   = IdentifierParser.Parse("tpe|BN000123|NAME") as ThirdPartyEMBLIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Accession, actual.Accession);
            Assert.AreEqual(expected.Name, actual.Name);
        }
        public void Parse_ShouldParseSWISSPROTIdentifier()
        {
            var expected = new SWISSPROTIdentifier("M73307", "AGMA13GT");
            var actual   = IdentifierParser.Parse("sp|M73307|AGMA13GT") as SWISSPROTIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Accession, actual.Accession);
            Assert.AreEqual(expected.Name, actual.Name);
        }
        public void Parse_ShouldParseEMBLIdentifier()
        {
            var expected = new EMBLIdentifier("M73307", "AGMA13GT");
            var actual   = IdentifierParser.Parse("emb|M73307|AGMA13GT") as EMBLIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Accession, actual.Accession);
            Assert.AreEqual(expected.Locus, actual.Locus);
        }
        public void Parse_ShouldParsePatentIdentifier()
        {
            var expected = new PatentIdentifier("US", "RE33188", "1");
            var actual   = IdentifierParser.Parse("pat|US|RE33188|1") as PatentIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Country, actual.Country);
            Assert.AreEqual(expected.Patent, actual.Patent);
            Assert.AreEqual(expected.SequenceNumber, actual.SequenceNumber);
        }
        public void Parse_ShouldParsePreGrantPatentIdentifier()
        {
            var expected = new PreGrantPatentIdentifier("EP", "0238993", "7");
            var actual   = IdentifierParser.Parse("pgp|EP|0238993|7") as PreGrantPatentIdentifier;

            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Code, actual.Code);
            Assert.AreEqual(expected.Country, actual.Country);
            Assert.AreEqual(expected.ApplicationNumber, actual.ApplicationNumber);
            Assert.AreEqual(expected.SequenceNumber, actual.SequenceNumber);
        }
Example #26
0
    public void TestSimpleIdentifier()
    {
        InitCompiler("abc", 0);

        Assert.IsTrue(parser.Parse(compiler));

        Assert.AreSame(root, compiler.Parent);
        Assert.AreEqual(1, root.Children.Count);
        Assert.AreEqual(new IdentifierToken("abc", 0), root.Children[0]);
        Assert.AreEqual(3, compiler.Pos);
    }
        public void Parse_oneTwoTHREEFour5Six7eight_9_ten()
        {
            var parser = new IdentifierParser();
            var result = parser.Parse("oneTwoTHREEFour5Six7eight_9__ten").ToArray();

            Assert.IsNotNull(result);
            Assert.AreEqual(12, result.Count());

            Assert.AreEqual(IdentifierPartTypeEnum.Word, result[0].Type);
            Assert.AreEqual("one", result[0].Value);

            Assert.AreEqual(IdentifierPartTypeEnum.Word, result[1].Type);
            Assert.AreEqual("Two", result[1].Value);

            Assert.AreEqual(IdentifierPartTypeEnum.Word, result[2].Type);
            Assert.AreEqual("THREE", result[2].Value);

            Assert.AreEqual(IdentifierPartTypeEnum.Word, result[3].Type);
            Assert.AreEqual("Four", result[3].Value);

            Assert.AreEqual(IdentifierPartTypeEnum.Word, result[4].Type);
            Assert.AreEqual("5", result[4].Value);

            Assert.AreEqual(IdentifierPartTypeEnum.Word, result[5].Type);
            Assert.AreEqual("Six", result[5].Value);

            Assert.AreEqual(IdentifierPartTypeEnum.Word, result[6].Type);
            Assert.AreEqual("7", result[6].Value);

            Assert.AreEqual(IdentifierPartTypeEnum.Word, result[7].Type);
            Assert.AreEqual("eight", result[7].Value);

            Assert.AreEqual(IdentifierPartTypeEnum.Other, result[8].Type);
            Assert.AreEqual("_", result[8].Value);

            Assert.AreEqual(IdentifierPartTypeEnum.Word, result[9].Type);
            Assert.AreEqual("9", result[9].Value);

            Assert.AreEqual(IdentifierPartTypeEnum.Other, result[10].Type);
            Assert.AreEqual("__", result[10].Value);

            Assert.AreEqual(IdentifierPartTypeEnum.Word, result[11].Type);
            Assert.AreEqual("ten", result[11].Value);
        }
 public void Parse_ShouldRejectEmptyText()
 {
     _ = IdentifierParser.Parse("");
 }
 public void Parse_ShouldRejectAllWhitespaceText()
 {
     _ = IdentifierParser.Parse("     ");
 }
Example #30
0
        public (string ns, string owner, string name) Parse(CharacterReader r)
        {
            if (r.End)
            {
                throw new ExpressionParseException(0, "Expected property name.");
            }

            var    openParens  = r.TakeIf('(');
            bool   closeParens = false;
            string ns          = null;
            string owner       = null;
            string name        = null;

            do
            {
                var token = IdentifierParser.Parse(r);

                if (token == null)
                {
                    if (r.End)
                    {
                        break;
                    }
                    else
                    {
                        if (openParens && !r.End && (closeParens = r.TakeIf(')')))
                        {
                            break;
                        }
                        else if (openParens)
                        {
                            throw new ExpressionParseException(r.Position, $"Expected ')'.");
                        }

                        throw new ExpressionParseException(r.Position, $"Unexpected '{r.Peek}'.");
                    }
                }
                else if (!r.End && r.TakeIf(':'))
                {
                    ns = ns == null ?
                         token :
                         throw new ExpressionParseException(r.Position, "Unexpected ':'.");
                }
                else if (!r.End && r.TakeIf('.'))
                {
                    owner = owner == null ?
                            token :
                            throw new ExpressionParseException(r.Position, "Unexpected '.'.");
                }
                else
                {
                    name = token;
                }
            } while (!r.End);

            if (name == null)
            {
                throw new ExpressionParseException(0, "Expected property name.");
            }
            else if (openParens && owner == null)
            {
                throw new ExpressionParseException(1, "Expected property owner.");
            }
            else if (openParens && !closeParens)
            {
                throw new ExpressionParseException(r.Position, "Expected ')'.");
            }
            else if (!r.End)
            {
                throw new ExpressionParseException(r.Position, "Expected end of expression.");
            }

            return(ns, owner, name);
        }