public async Task ReservedKeywordIsPrefixed()
        {
            const string method_name  = "TestMethod";
            const string key_name     = "TestKey";
            const string english_text = "TestEnglish{0}{1}{2}";

            var param1 = new LocalisationParameter("int", "new");

            await setupLocalisation(new LocalisationMember(method_name, key_name, english_text, param1));

            checkResult($@"
        /// <summary>
        /// ""{english_text}""
        /// </summary>
        public static LocalisableString {method_name}({param1.Type} @{param1.Name}) => new TranslatableString(getKey(@""{key_name}""), @""{english_text}"", @{param1.Name});
");
        }
示例#2
0
        public async Task MethodIsGeneratedFromParameters()
        {
            const string method_name  = "TestMethod";
            const string key_name     = "TestKey";
            const string english_text = "TestEnglish{0}{1}{2}";

            var param1 = new LocalisationParameter("int", "first");
            var param2 = new LocalisationParameter("string", "second");
            var param3 = new LocalisationParameter("customobj", "third");

            await setupLocalisation(new LocalisationMember(method_name, key_name, english_text, param1, param2, param3));

            await checkResult($@"
        /// <summary>
        /// ""{english_text}""
        /// </summary>
        public static LocalisableString {method_name}({param1.Type} {param1.Name}, {param2.Type} {param2.Name}, {param3.Type} {param3.Name}) => new TranslatableString(getKey(@""{key_name}""), @""{english_text}"", {param1.Name}, {param2.Name}, {param3.Name});
");
        }
示例#3
0
        public async Task CheckMethodMemberIsReadCorrectly()
        {
            const string method_name  = "TestMethod";
            const string key_name     = "TestKey";
            const string english_text = "TestEnglish{0}{1}{2}";

            var param1 = new LocalisationParameter("int", "first");
            var param2 = new LocalisationParameter("string", "second");
            var param3 = new LocalisationParameter("customobj", "third");

            var localisation = await setupFile($@"{SyntaxTemplates.FILE_HEADER_SIGNATURE}

namespace {test_namespace}
{{
    public static class TestClass
    {{
        private const string prefix = ""{test_namespace}.{test_class_name}"";

        /// <summary>
        /// ""{english_text}""
        /// </summary>
        public static LocalisableString {method_name}({param1.Type} {param1.Name}, {param2.Type} {param2.Name}, {param3.Type} {param3.Name}) => new TranslatableString(getKey(""{key_name}""), ""{english_text}"", {param1.Name}, {param2.Name}, {param3.Name});

        private static string getKey(string key) => $""{{prefix}}:{{key}}"";
    }}
}}");

            Assert.Single(localisation.Members);
            Assert.Equal(method_name, localisation.Members[0].Name);
            Assert.Equal(key_name, localisation.Members[0].Key);
            Assert.Equal(english_text, localisation.Members[0].EnglishText);

            Assert.Equal(3, localisation.Members[0].Parameters.Length);
            Assert.Equal(param1, localisation.Members[0].Parameters[0]);
            Assert.Equal(param2, localisation.Members[0].Parameters[1]);
            Assert.Equal(param3, localisation.Members[0].Parameters[2]);
        }