128 lines
5.5 KiB
C#
Raw Normal View History

// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace System.Data.Entity.Utilities
{
using System.Data.Entity.Migrations;
using Xunit;
public class StringExtensionsTests
{
public class EqualsIgnoreCase
{
[Fact]
public void EqualsIgnoreCase_should_ignore_case()
{
Assert.True("foo".EqualsIgnoreCase("Foo"));
Assert.False("Bar".EqualsIgnoreCase("Foo"));
}
}
public class ToDatabaseName
{
[Fact]
public void ToDatabaseName_returns_database_name()
{
var databaseName = "dbo.Customers".ToDatabaseName();
Assert.Equal("dbo", databaseName.Schema);
Assert.Equal("Customers", databaseName.Name);
}
}
public class IsValidMigrationId
{
[Fact]
public void IsValid_should_correctly_validate_ids()
{
Assert.False("Foo".IsValidMigrationId());
Assert.False("11111111111111_Foo".IsValidMigrationId());
Assert.False("11111111111111Foo".IsValidMigrationId());
Assert.True("111111111111111_Foo".IsValidMigrationId());
Assert.True(DbMigrator.InitialDatabase.IsValidMigrationId());
}
}
public class IsAutomaticMigration
{
[Fact]
public void IsAutomatic_detects_automatic_migration_names()
{
Assert.True("111111111111111_AutomaticMigration".IsAutomaticMigration());
Assert.True("111111111111111_Foo_AutomaticMigration".IsAutomaticMigration());
Assert.False("111111111111111_Foo".IsAutomaticMigration());
}
}
public class RestrictTo
{
[Fact]
public void RestrictTo_should_limit_string_length()
{
Assert.Equal("123", "123".RestrictTo(5));
Assert.Equal("123", "123".RestrictTo(3));
Assert.Equal("123", "12345".RestrictTo(3));
Assert.Equal("", "12345".RestrictTo(0));
Assert.Equal("", "".RestrictTo(0));
Assert.Equal(null, StringExtensions.RestrictTo(null, 0));
}
}
public class ToAutomaticMigrationId
{
[Fact]
public void ToAutomaticMigrationId_should_rewind_timestamp_and_append_auto_string()
{
Assert.Equal("201205054534555_Foo_AutomaticMigration", "201205054534556_Foo".ToAutomaticMigrationId());
Assert.Equal("111111111111109_Foo_AutomaticMigration", "111111111111110_Foo".ToAutomaticMigrationId());
}
}
public class IsValidUndottedName
{
[Fact]
public void Null_or_empty_strings_are_not_valid()
{
Assert.False(((string)null).IsValidUndottedName());
Assert.False("".IsValidUndottedName());
Assert.False(" ".IsValidUndottedName());
}
[Fact]
public void Strings_that_dont_start_with_a_valid_characeter_are_not_valid()
{
Assert.False("_PinkyPie".IsValidUndottedName());
Assert.False(" RainbowDash".IsValidUndottedName());
Assert.False("-AppleJack".IsValidUndottedName());
Assert.False("\u033CFlutterShy".IsValidUndottedName()); // Non-spacing mark (Combining seagull below)
Assert.False("\u0940TwighlightSparkle".IsValidUndottedName()); // Spacing-combining mark (Devanagari vowel sign II)
Assert.False("\uFE4FRarity".IsValidUndottedName()); // Connector punctuation (Wavy low line)
Assert.False("6PrincessCelestia".IsValidUndottedName()); // Decimal digit number
Assert.False("\U0001F40ESpike".IsValidUndottedName()); // Other (Horse)
Assert.False("\u2061NightmareMoon".IsValidUndottedName()); // Other, format (Function application)
}
[Fact]
public void Strings_that_contain_internal_invalid_characeters_are_not_valid()
{
Assert.False("Rainbow Dash".IsValidUndottedName());
Assert.False("Apple-Jack".IsValidUndottedName());
Assert.False("Shining\U0001F40EArmor".IsValidUndottedName()); // Other (Horse)
Assert.False("Nightmare\u2061Moon".IsValidUndottedName()); // Other, format (Function application)
}
[Fact]
public void Strings_that_have_only_valid_characters_are_valid()
{
Assert.True("Pinky_Pie".IsValidUndottedName());
Assert.True("Flutter\u033CShy".IsValidUndottedName()); // Non-spacing mark (Combining seagull below)
Assert.True("Twighlight\u0940Sparkle".IsValidUndottedName()); // Spacing-combining mark (Devanagari vowel sign II)
Assert.True("Rarity\uFE4F".IsValidUndottedName()); // Connector punctuation (Wavy low line)
Assert.True("Princess6Celestia".IsValidUndottedName()); // Decimal digit number
Assert.True("\u2165Zecora".IsValidUndottedName()); // Number, letter (Roman numeral 6)
Assert.True("Princess\u2165Celestia".IsValidUndottedName()); // Number, letter (Roman numeral 6)
}
}
}
}