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()); }
public void Identifer_CanContainQuestionMark_IsValidIdentifier() { IdentifierParser parser = new IdentifierParser(); string token = "ab?"; IdentifierNode node = (IdentifierNode)parser.Parse(token); Assert.AreEqual(token, node.Name); }
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); }
public void Identifer_MultipleCharacters_IsValidIdentifier() { IdentifierParser parser = new IdentifierParser(); string token = "ab"; IdentifierNode node = (IdentifierNode)parser.Parse(token); Assert.AreEqual(token, node.Name); }
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); }
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); }
public void Identifer_Operator_IsValidIdentifer() { IdentifierParser parser = new IdentifierParser(); string token = "<="; IdentifierNode node = (IdentifierNode)parser.Parse(token); Assert.AreEqual(token, node.Name); }
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); }
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(" "); }
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); }