private void InternalParse(string text) { var gf = Grandfathered.GetPreferredValue(text); if (gf != null) { text = gf; } var tokens = new TokenEnumerator(text); if (tokens.TokenIs(PrivateUseSubtags.Singleton)) { PrivateUse = PrivateUseSubtags.Parse(tokens); return; } Language = tokens.ParseLanguage(); if (!tokens.CurrentTokenAvailable) { return; } Script = tokens.TryParseScript(); if (!tokens.CurrentTokenAvailable) { return; } Region = tokens.TryParseRegion(); if (!tokens.CurrentTokenAvailable) { return; } Variants = VariantCollection.TryParse(Language, Script, tokens); if (!tokens.CurrentTokenAvailable) { return; } Extensions = ExtensionSubtagCollection.TryParse(tokens); if (!tokens.CurrentTokenAvailable) { return; } PrivateUse = PrivateUseSubtags.Parse(tokens); }
public void ParseFail(string text) { var pu1 = PrivateUseSubtags.TryParse(text); Assert.That(pu1.HasValue, Is.False); PrivateUseSubtags pu2; Assert.That(PrivateUseSubtags.TryParse(text, out pu2), Is.False); Assert.Throws <FormatException>(() => PrivateUseSubtags.Parse(text)); }
public void Equals() { var tag1 = new PrivateUseSubtags(); var tag2 = (object)tag1; var tag3 = PrivateUseSubtags.Parse("x-aaa"); var tag4 = (object)PrivateUseSubtags.Parse("x-aaa"); var tag5 = PrivateUseSubtags.Parse("x-aaa-bbb"); Assert.IsFalse(tag1.Equals(null)); Assert.IsTrue(tag1.Equals(tag2)); Assert.AreEqual(tag1, tag1); Assert.AreNotEqual(tag1, tag3); Assert.AreEqual(tag3, tag3); Assert.AreEqual(tag3, tag4); Assert.AreNotEqual(tag4, tag5); }
public void Contains(string subtagText, string tag, bool expected) { var pu = subtagText == null ? new PrivateUseSubtags() : PrivateUseSubtags.Parse(subtagText); Assert.That(pu.Contains(tag), Is.EqualTo(expected)); }