public void SetTemplateVarTableTest()
        {
            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var testVal = @"[var:{ ""name"":""race"",""display"":true,""value"":""tbl:race""}]";

            var field = new TemplateField
            {
                Sort      = 1,
                Value     = testVal,
                FieldType = TemplateFieldType.Variable
            };

            var(error, result) = validator.SetVariableField(field).Result;

            var json = JsonConvert.DeserializeObject <TemplateVar>(result.TemplateJson);

            var tblField = JsonConvert.DeserializeObject <TemplateField>(json.TemplateObjectJson);

            var tbl = JsonConvert.DeserializeObject <TemplateTbl>(tblField.TemplateJson);

            Assert.AreEqual(field.VariableName, "race", $"Variable name field is incorrect: {field.VariableName}");
            Assert.AreEqual(ValidationError.None, error, $"Validation error: {error.ToString()}");
            Assert.IsTrue(json.Display, $"Display is incorrect: {json.Display}");
            Assert.AreEqual("race", json.Name, $"Name is incorrect: {json.Name}");
            Assert.AreEqual(TemplateFieldType.RandomTable, json.TemplateObjectType, $"Type is not table");
            Assert.AreEqual("race", tbl.TableName, $"Table name is incorrect: {tbl.TableName}");
            Assert.AreEqual(0, tbl.Variables.Count, $"Table Vars != 0 : {tbl.Variables.Count}");
        }
Esempio n. 2
0
        /// <summary>
        /// Called when validations are needed for the command
        /// </summary>
        /// <param name="context">Validation Context where to add validation errors</param>
        /// <param name="settingsElement">The settings element in the model being validated</param>
        /// <param name="settings">Settings for the command</param>
        public void Validate(Microsoft.VisualStudio.Modeling.Validation.ValidationContext context, IAutomationSettingsSchema settingsElement, ICommandSettings settings)
        {
            try
            {
                Guard.NotNull(() => settings, settings);

                var templateValidator = new TemplateValidator(settings.Name,
                                                              new UnfoldVsTemplateCommand.UnfoldVsTemplateSettings
                {
                    SanitizeName         = settings.GetPropertyValue <bool>(Reflector <UnfoldVsTemplateCommand> .GetPropertyName(u => u.SanitizeName)),
                    SyncName             = settings.GetPropertyValue <bool>(Reflector <UnfoldVsTemplateCommand> .GetPropertyName(u => u.SyncName)),
                    TemplateAuthoringUri = settings.GetPropertyValue <string>(Reflector <UnfoldVsTemplateCommand> .GetPropertyName(u => u.TemplateAuthoringUri)),
                    TemplateUri          = settings.GetPropertyValue <string>(Reflector <UnfoldVsTemplateCommand> .GetPropertyName(u => u.TemplateUri)),
                    SettingsElement      = settingsElement,
                    OwnerElement         = settings.Owner,
                }, context, ((ModelElement)settings).Store);
                templateValidator.ValidateCommandSettings(tracer);
            }
            catch (Exception ex)
            {
                tracer.Error(
                    ex,
                    Resources.ValidationMethodFailed_Error,
                    Reflector <TemplateValidator> .GetMethod(n => n.ValidateCommandSettings(null)).Name);

                throw;
            }
        }
        public void SetTemplateVarListTest()
        {
            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var testVal = @"[var:{""name"":""gender"",""display"":true,""value"":""lst:male, female""}]";

            var field = new TemplateField
            {
                Sort      = 1,
                Value     = testVal,
                FieldType = TemplateFieldType.Variable
            };

            var(error, result) = validator.SetVariableField(field).Result;

            var json = JsonConvert.DeserializeObject <TemplateVar>(result.TemplateJson);

            var listField = JsonConvert.DeserializeObject <TemplateField>(json.TemplateObjectJson);

            var list = JsonConvert.DeserializeObject <TemplateLst>(listField.TemplateJson);

            Assert.AreEqual(field.VariableName, "gender", $"Variable name field is incorrect: {field.VariableName}");
            Assert.AreEqual(ValidationError.None, error, $"Validation error: {error.ToString()}");
            Assert.IsTrue(json.Display, $"Display is incorrect: {json.Display}");
            Assert.AreEqual("gender", json.Name, $"Name is incorrect: {json.Name}");
            Assert.AreEqual(TemplateFieldType.List, json.TemplateObjectType, $"Type is not list");
            Assert.IsTrue(list.Values.Contains("male"), $"List does not contain male");
            Assert.IsTrue(list.Values.Contains("female"), $"List does not contain female");
        }
Esempio n. 4
0
        public void Success_when_is_validated_when_auto_generated_and_primary_appended_with_auto_generated_is_specified_in_template()
        {
            var templateHandlerNew = BuildTemplateHandler(null);
            var TemplateValidator  = new TemplateValidator(templateHandlerNew, null);
            var IsColumnNotNullValueColumnContextHandler       = new IsColumnNotNullValueColumnContextHandler(templateHandlerNew);
            var IsColumnPrimaryKeyColumnContextHandler         = new IsColumnPrimaryKeyColumnContextHandler(templateHandlerNew);
            var IsColumnAutoGeneratedValueColumnContextHandler = new IsColumnAutoGeneratedValueColumnContextHandler(templateHandlerNew);
            var ColumnNameColumnContextHandler = new ColumnNameColumnContextHandler(templateHandlerNew);
            var TemplateHandlerNew             = BuildTemplateHandler(null);

            String submittedString =
                IsColumnNotNullValueColumnContextHandler.StartContext +
                IsColumnPrimaryKeyColumnContextHandler.StartContext +
                IsColumnAutoGeneratedValueColumnContextHandler.StartContext +
                ColumnNameColumnContextHandler.Signature +
                IsColumnAutoGeneratedValueColumnContextHandler.EndContext +
                IsColumnPrimaryKeyColumnContextHandler.EndContext +
                IsColumnNotNullValueColumnContextHandler.EndContext +
                " " +
                IsColumnPrimaryKeyColumnContextHandler.StartContext +
                IsColumnAutoGeneratedValueColumnContextHandler.StartContext +
                ColumnNameColumnContextHandler.Signature +
                IsColumnAutoGeneratedValueColumnContextHandler.EndContext +
                IsColumnPrimaryKeyColumnContextHandler.EndContext;
            bool result         = TemplateValidator.TemplateStringValidation(submittedString);
            bool expectedResult = true;

            Assert.AreEqual(expectedResult, result);
        }
Esempio n. 5
0
        public void ListRenderTest()
        {
            var list1 = new List <string> {
                "item1", "item2", "item3"
            };
            var list2 = new List <string> {
                "thing one", "thing two", "thing three"
            };


            var templateBody =
                @"List Test

list1=[lst:item1,item2, item3 ]
list2=[lst:thing one, thing two, thing three]
";


            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var template = new Template
            {
                Id           = Guid.Empty,
                Name         = "List Test",
                Category     = "Test",
                Description  = "Description here",
                Enabled      = true,
                TemplateBody = templateBody
            };

            var result = validator.ValidateTemplate(template).Result;

            var outTemplate = result.Template;
            var errors      = result.ValidationErrors;

            Assert.AreEqual(0, errors.Count, $"Validation errors incorrect : {errors.Count}");
            Assert.AreEqual(2, outTemplate.Fields.Count, $"Fields incorrect : {outTemplate.Fields.Count}");
            Assert.AreEqual(0, outTemplate.TemplateVariables.Count,
                            $"Variable count incorrect : {outTemplate.TemplateVariables.Count}");

            var renderer = new TemplateRenderer(new MockRandomTableService(), new MockTemplateService());

            var render = renderer.RenderTemplateToMarkDown(outTemplate).Result;

            var regex1 = new Regex(@"^list1=([\d\w\s]+)[\r]", RegexOptions.Multiline);
            var regex2 = new Regex(@"^list2=([\d\w\s]+)[\r]", RegexOptions.Multiline);

            var match1 = regex1.Match(render);
            var match2 = regex2.Match(render);


            Assert.IsTrue(match1.Success, "list1 was not found");
            Assert.IsTrue(list1.Contains(match1.Groups[1].Value), "list1 not valid");
            Assert.IsTrue(match2.Success, "list2 was not found");
            Assert.IsTrue(list2.Contains(match2.Groups[1].Value), "list2 not valid");
        }
Esempio n. 6
0
        public void TemplateValidatorTest()
        {
            var    ColumnNameColumnContextHandler = new ColumnNameColumnContextHandler(BuildTemplateHandler(null));
            var    TemplateValidator = new TemplateValidator(BuildTemplateHandler(null), null);
            String submittedString   = ColumnNameColumnContextHandler.Signature;
            bool   value             = TemplateValidator.TemplateStringValidation(submittedString);
            bool   expectedValue     = true;

            Assert.AreEqual(expectedValue, value);
        }
Esempio n. 7
0
 public TemplateController(
     ILogger <AdminController> logger,
     IHubContext <AppHub, IHubEvent> hub,
     TemplateValidator validator,
     TemplateService templateService,
     IHypervisorService podService
     ) : base(logger, hub, validator)
 {
     _svc = templateService;
     _pod = podService;
 }
Esempio n. 8
0
        public void Success_when_if_not_auto_conditionned_if_nested_name_template_string_is_validated()
        {
            var    templateHandlerNew             = BuildTemplateHandler(null);
            var    ColumnNameColumnContextHandler = new ColumnNameColumnContextHandler(templateHandlerNew);
            var    TemplateValidator = new TemplateValidator(BuildTemplateHandler(null), null);
            var    IsColumnNotAutoGeneratedValueColumnContextHandler = new IsColumnNotAutoGeneratedValueColumnContextHandler(templateHandlerNew);
            string submittedString = IsColumnNotAutoGeneratedValueColumnContextHandler.StartContext + ColumnNameColumnContextHandler.Signature + IsColumnNotAutoGeneratedValueColumnContextHandler.EndContext;
            bool   result          = TemplateValidator.TemplateStringValidation(submittedString);
            bool   expectedResult  = true;

            Assert.AreEqual(expectedResult, result);
        }
Esempio n. 9
0
            public void WhenTemplateUriIsNotEmpty_ThenValidateTemplateUriIsNotEmptySucceeds()
            {
                var templateValidator = new TemplateValidator(this.settings.Name,
                                                              new UnfoldVsTemplateCommand.UnfoldVsTemplateSettings
                {
                    TemplateUri  = "foo",
                    OwnerElement = this.product
                }, validationContext, this.settings.Store);

                templateValidator.ValidateTemplateUriIsNotEmpty();

                Assert.True(validationContext.CurrentViolations.Count == 0);
            }
Esempio n. 10
0
        /// <summary>
        /// Generates a new Nettle compiler with custom functions
        /// </summary>
        /// <param name="customFunctions">The custom functions</param>
        /// <returns>The compiler generated</returns>
        private static INettleCompiler GenerateCompiler
        (
            params IFunction[] customFunctions
        )
        {
            var blockifier         = new Blockifier();
            var templateRepository = new RegisteredTemplateRepository();

            var functionRepository = new FunctionRepository
                                     (
                _resolvers.ToArray()
                                     );

            var parser = new TemplateParser
                         (
                blockifier
                         );

            var renderer = new TemplateRenderer
                           (
                functionRepository,
                templateRepository
                           );

            var validator = new TemplateValidator
                            (
                functionRepository
                            );

            var compiler = new NettleCompiler
                           (
                parser,
                renderer,
                validator,
                functionRepository,
                templateRepository
                           );

            if (customFunctions != null)
            {
                foreach (var function in customFunctions)
                {
                    compiler.RegisterFunction
                    (
                        function
                    );
                }
            }

            return(compiler);
        }
Esempio n. 11
0
        public void TableRenderTest()
        {
            var list = new List <string>
            {
                "Table entry 1",
                "Table entry 2",
                "Table entry 3",
                "Table entry 4"
            };


            var templateBody =
                @"Table Test

table=[tbl:Test Table ]
";


            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var template = new Template
            {
                Id           = Guid.Empty,
                Name         = "Table Test",
                Category     = "Test",
                Description  = "Description here",
                Enabled      = true,
                TemplateBody = templateBody
            };

            var result = validator.ValidateTemplate(template).Result;

            var outTemplate = result.Template;
            var errors      = result.ValidationErrors;

            Assert.AreEqual(0, errors.Count, $"Validation errors incorrect : {errors.Count}");
            Assert.AreEqual(1, outTemplate.Fields.Count, $"Fields incorrect : {outTemplate.Fields.Count}");
            Assert.AreEqual(0, outTemplate.TemplateVariables.Count,
                            $"Variable count incorrect : {outTemplate.TemplateVariables.Count}");

            var renderer = new TemplateRenderer(new MockRandomTableService(), new MockTemplateService());

            var render = renderer.RenderTemplateToMarkDown(outTemplate).Result;

            var regex1 = new Regex(@"^table=([\d\w\s]+)[\r]", RegexOptions.Multiline);

            var match1 = regex1.Match(render);

            Assert.IsTrue(match1.Success, "list1 was not found");
            Assert.IsTrue(list.Contains(match1.Groups[1].Value), "list1 not valid");
        }
Esempio n. 12
0
            public void ThenValidateTemplateUriIsNotEmptyFails()
            {
                var templateValidator = new TemplateValidator(this.settings.Name,
                                                              new UnfoldVsTemplateCommand.UnfoldVsTemplateSettings
                {
                    TemplateUri     = string.Empty,
                    OwnerElement    = this.product,
                    SettingsElement = (IAutomationSettingsSchema)this.settings.Extends,
                }, validationContext, this.settings.Store);

                templateValidator.ValidateTemplateUriIsNotEmpty();

                Assert.True(validationContext.CurrentViolations.Count == 1);
                Assert.True(validationContext.ValidationSubjects.IndexOf(this.settings) == 0);
            }
        internal void ValidateAll(ValidationContext context)
        {
            var templateValidator = new TemplateValidator(this.Name,
                                                          new UnfoldVsTemplateCommand.UnfoldVsTemplateSettings
            {
                SanitizeName          = this.SanitizeName,
                SyncName              = this.SyncName,
                TemplateAuthoringUri  = this.TemplateAuthoringUri,
                TemplateUri           = this.TemplateUri,
                SettingsElement       = (IAutomationSettingsSchema)this.Extends,
                OwnerElement          = this.Owner,
                CreateElementOnUnfold = CreateElementOnUnfold
            }, context, this.Store);

            templateValidator.ValidateTemplateSettings(tracer);
        }
Esempio n. 14
0
        public void InvalidTemplateTest()
        {
            var invalidTemplate =
                @"Test Template

Name: [tbl:{gender} {race} First Names] [tbl:Missing Table]

Race: [var:{""name"":""race"",""display"":true,""value"":""tbl:race""}]
Gender: [var:{""name"":""gender"",""display"":true,""value"":""lst:male, female}]

STR: [die:3d6]   DEX: [die:3d6] CON: [die:3dt]
INT: [die:3d6]   WIS: [die:3d6] CHA: [die:3d6]

[tmp:Missing Template]

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse eu nulla vitae orci consequat pharetra id in dui. Nulla euismod pretium commodo. Fusce ultrices elit porta purus mattis efficitur. Pellentesque sed luctus metus. Quisque luctus sagittis magna eget porta. Suspendisse eu molestie lectus, in pellentesque lacus. Sed interdum feugiat tellus in vestibulum. Suspendisse erat risus, molestie ac quam vitae, euismod pellentesque urna. Integer vel elit eros. Praesent venenatis a justo sed dapibus. Aenean eget tortor cursus, tristique ipsum vitae, vehicula erat.


In sed ante vitae diam sodales rhoncus vel eu libero. Nam hendrerit ipsum ac magna consectetur accumsan. Phasellus ut efficitur arcu. Sed vestibulum at libero non lacinia. Fusce semper iaculis metus, et ullamcorper ante auctor sit amet. Nulla quis feugiat purus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam eget enim vel mi dignissim sollicitudin. Cras non aliquet lectus. Integer id tortor eu ante dapibus blandit et non odio. Phasellus sed posuere libero. Quisque tincidunt, ligula sit amet pharetra dignissim, dui orci dictum nisi, id blandit tellus odio at eros. Maecenas eget rutrum turpis. Ut finibus leo a felis vehicula consectetur. Sed hendrerit justo sit amet erat cursus, quis suscipit diam consectetur. Vestibulum at accumsan dui, vel varius tellus.";



            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var template = new Template
            {
                Id           = Guid.Empty,
                Name         = "Invalid Template",
                Category     = "Test",
                Description  = "Description here",
                Enabled      = true,
                TemplateBody = invalidTemplate
            };

            var result = validator.ValidateTemplate(template).Result;

            var outTemplate = result.Template;
            var errors      = result.ValidationErrors;

            Assert.AreEqual(errors.Count, 4, $"Validation errors count: {errors.Count}");
            Assert.AreEqual(ValidationError.TableDoesNotExist, errors["[tbl:Missing Table]"]);
            Assert.AreEqual(ValidationError.TemplateDoesNotExist, errors["[tmp:Missing Template]"]);
            Assert.AreEqual(ValidationError.InvalidTag, errors["[die:3dt]"]);
            Assert.AreEqual(ValidationError.InvalidTag, errors[@"[var:{""name"":""gender"",""display"":true,""value"":""lst:male, female}]"]);
            Assert.AreEqual(10, outTemplate.Fields.Count, $"Fields count != 10 : {outTemplate.Fields.Count}");
            Assert.AreEqual(1, outTemplate.TemplateVariables.Count, $"Variable count != 1 : {outTemplate.TemplateVariables.Count}");
        }
        public void SetTemplateTmpExistsTrialingWhiteSpaceTest()
        {
            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var testVal = "[TMP: Test Template ]";

            var field = new TemplateField
            {
                Sort      = 1,
                Value     = testVal,
                FieldType = TemplateFieldType.Template
            };

            var(error, result) = validator.SetTemplateField(field).Result;

            var json = JsonConvert.DeserializeObject <TemplateTmp>(result.TemplateJson);

            Assert.AreEqual(ValidationError.None, error, $"Validation error: {error.ToString()}");
            Assert.AreEqual("Test Template", json.TemplateName, $"Template value was incorrect: {json}");
        }
        public void SetTemplateTmpWithBadVariablesNestedTest()
        {
            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var testVal = "[tmp:{Var 1 Test {Var 2}} Template]";

            var field = new TemplateField
            {
                Sort      = 1,
                Value     = testVal,
                FieldType = TemplateFieldType.Template
            };

            var(error, result) = validator.SetTemplateField(field).Result;

            var json = JsonConvert.DeserializeObject <TemplateTmp>(result.TemplateJson);

            Assert.AreEqual(ValidationError.InvalidTag, error, $"Validation error: {error.ToString()}");
            Assert.AreEqual("{Var 1 Test {Var 2}} Template", json.TemplateName, $"Table value was incorrect: {json}");
        }
        public void SetRandomNumberNegativeTest()
        {
            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var testVal = "[rng:-3:-18]";

            var field = new TemplateField
            {
                Sort      = 1,
                Value     = testVal,
                FieldType = TemplateFieldType.RandomNumber
            };

            var(error, result) = validator.SetRandomNumberField(field);

            var json = JsonConvert.DeserializeObject <TemplateRng>(result.TemplateJson);

            Assert.AreEqual(ValidationError.None, error, $"Validation error: {error.ToString()}");
            Assert.AreEqual(-18, json.LowerBound, $"Lower bound was incorrect: {json.LowerBound}");
            Assert.AreEqual(-3, json.UpperBound, $"Upper bound was incorrect: {json.UpperBound}");
        }
        public void SetRandomTableExistsTrailingWhiteSpaceTest()
        {
            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var testVal = "[tbl: Test Table ]";

            var field = new TemplateField
            {
                Sort      = 1,
                Value     = testVal,
                FieldType = TemplateFieldType.RandomTable
            };

            var(error, result) = validator.SetRandomTableField(field).Result;

            var json = JsonConvert.DeserializeObject <TemplateTbl>(result.TemplateJson);

            Assert.AreEqual(ValidationError.None, error, $"Validation error: {error.ToString()}");
            Assert.AreEqual("Test Table", json.TableName, $"Table value was incorrect: {json}");
            Assert.AreEqual(0, json.Variables.Count, $"There should be no variables set");
        }
        public void SetTemplateListTest()
        {
            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var testVal = "[lst:alfa, bravo, charlie]";

            var field = new TemplateField
            {
                Sort      = 1,
                Value     = testVal,
                FieldType = TemplateFieldType.List
            };

            var(error, result) = validator.SetListField(field);

            var json = JsonConvert.DeserializeObject <TemplateLst>(result.TemplateJson);

            Assert.AreEqual(ValidationError.None, error, $"Validation error: {error.ToString()}");
            Assert.IsTrue(json.Values.Contains("alfa"), $"List does not contain alfa");
            Assert.IsTrue(json.Values.Contains("bravo"), $"List does not contain bravo");
            Assert.IsTrue(json.Values.Contains("charlie"), $"List does not contain charlie");
        }
        public void SetTemplateTmpWithVariablesTest()
        {
            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var testVal = "[tmp:{Var 1} Test {Var 2} Template]";

            var field = new TemplateField
            {
                Sort      = 1,
                Value     = testVal,
                FieldType = TemplateFieldType.Template
            };

            var(error, result) = validator.SetTemplateField(field).Result;

            var json = JsonConvert.DeserializeObject <TemplateTmp>(result.TemplateJson);

            Assert.AreEqual(ValidationError.None, error, $"Validation error: {error.ToString()}");
            Assert.AreEqual("{Var 1} Test {Var 2} Template", json.TemplateName, $"Table value was incorrect: {json}");
            Assert.IsTrue(json.Variables.Contains("Var 1"), "Var 1 is not in variable list");
            Assert.IsTrue(json.Variables.Contains("Var 2"), "Var 2 is not in variable list");
        }
        public void SetTemplateDieMultipleWithModTest()
        {
            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var testVal = "[die:4d6+2]";

            var field = new TemplateField
            {
                Sort      = 1,
                Value     = testVal,
                FieldType = TemplateFieldType.DieRoll
            };

            var(error, result) = validator.SetDieRollField(field);

            var json = JsonConvert.DeserializeObject <TemplateDie>(result.TemplateJson);

            Assert.AreEqual(ValidationError.None, error, $"Validation error: {error.ToString()}");
            Assert.AreEqual(6, json.DieSize, $"Die size is not what is expected: {json.DieSize}");
            Assert.AreEqual(4, json.DieCount, $"Die count is not what is expected: {json.DieCount}");
            Assert.AreEqual(2, json.Modifier, $"Die mod is not what is expected: {json.Modifier}");
        }
#pragma warning restore 1998

        private void SetUpTemplates()
        {
            var validator = new TemplateValidator(new MockRandomTableService(), this);

            var testBody = @"2d4+10=[die:2d4+10]
-6to6=[rng:-6:6]
list=[lst:thing one, thing two, thing three]
table=[tbl:Test Table]
";

            var testTemplate = new Template
            {
                Id           = Guid.Empty,
                Name         = "Test Template",
                Category     = "Test",
                Description  = "Test",
                Enabled      = true,
                TemplateBody = testBody
            };

            var result = validator.ValidateTemplate(testTemplate).Result;

            templates["Test Template"] = result.Template;
        }
Esempio n. 23
0
        public void RandomNumberRenderTest()
        {
            var templateBody =
                @"Random Test

1to6=[rng:1:6]
-6to6=[rng:-6:6]
6to-6=[rng:6:-6]
-10to-2=[rng:-10:-2]
";


            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var template = new Template
            {
                Id           = Guid.Empty,
                Name         = "Random Test",
                Category     = "Test",
                Description  = "Description here",
                Enabled      = true,
                TemplateBody = templateBody
            };

            var result = validator.ValidateTemplate(template).Result;

            var outTemplate = result.Template;
            var errors      = result.ValidationErrors;

            Assert.AreEqual(0, errors.Count, $"Validation errors incorrect : {errors.Count}");
            Assert.AreEqual(4, outTemplate.Fields.Count, $"Fields incorrect : {outTemplate.Fields.Count}");
            Assert.AreEqual(0, outTemplate.TemplateVariables.Count,
                            $"Variable count incorrect : {outTemplate.TemplateVariables.Count}");

            var renderer = new TemplateRenderer(new MockRandomTableService(), new MockTemplateService());

            var render = renderer.RenderTemplateToMarkDown(outTemplate).Result;

            var regex1 = new Regex(@"1to6=(\d+)");
            var regex2 = new Regex(@"-6to6=([\d-]+)");
            var regex3 = new Regex(@"6to-6=([\d-]+)");
            var regex4 = new Regex(@"-10to-2=([\d-]+)");

            var match1 = regex1.Match(render);
            var match2 = regex2.Match(render);
            var match3 = regex3.Match(render);
            var match4 = regex4.Match(render);

            int.TryParse(match1.Groups[1].Value, out var val1);
            int.TryParse(match2.Groups[1].Value, out var val2);
            int.TryParse(match3.Groups[1].Value, out var val3);
            int.TryParse(match4.Groups[1].Value, out var val4);

            Assert.IsTrue(match1.Success, "1to6 was not found");
            Assert.IsTrue(1 <= val1 && val1 <= 6, "1to6 roll not valid");
            Assert.IsTrue(match2.Success, "-6to6 was not found");
            Assert.IsTrue(-6 <= val2 && val2 <= 6, "-6to6 roll not valid");
            Assert.IsTrue(match3.Success, "6to-6 was not found");
            Assert.IsTrue(-6 <= val3 && val3 <= 6, "6to-6 roll not valid");
            Assert.IsTrue(match4.Success, "-10to-2 was not found");
            Assert.IsTrue(-10 <= val4 && val4 <= -2, "-10to-2 roll not valid");
        }
Esempio n. 24
0
        public void TableListVariableRenderTest()
        {
            var list = new List <string>
            {
                "Table entry 1",
                "Table entry 2",
                "Table entry 3",
                "Table entry 4"
            };


            var templateBody =
                @"Table Test

var1=[var:{ ""name"":""test"",""display"":true,""value"":""lst: Test""}]
var2=[var:{ ""name"":""table"",""display"":false,""value"":""lst:Table""}]

table=[tbl:{test} {table} ]
";


            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var template = new Template
            {
                Id           = Guid.Empty,
                Name         = "Table Test",
                Category     = "Test",
                Description  = "Description here",
                Enabled      = true,
                TemplateBody = templateBody
            };

            var result = validator.ValidateTemplate(template).Result;

            var outTemplate = result.Template;
            var errors      = result.ValidationErrors;

            Assert.AreEqual(0, errors.Count, $"Validation errors incorrect : {errors.Count}");
            Assert.AreEqual(1, outTemplate.Fields.Count, $"Fields incorrect : {outTemplate.Fields.Count}");
            Assert.AreEqual(2, outTemplate.TemplateVariables.Count,
                            $"Variable count incorrect : {outTemplate.TemplateVariables.Count}");

            var renderer = new TemplateRenderer(new MockRandomTableService(), new MockTemplateService());

            var render = renderer.RenderTemplateToMarkDown(outTemplate).Result;

            var regex1 = new Regex(@"^var1=([\w]+)[\r]", RegexOptions.Multiline);
            var regex2 = new Regex(@"^var2=[\r]", RegexOptions.Multiline);
            var regex3 = new Regex(@"table=(Table entry \d)");

            var match1 = regex1.Match(render);
            var match2 = regex2.Match(render);
            var match3 = regex3.Match(render);

            Assert.IsTrue(match1.Success, "var1 was not found");
            Assert.AreEqual("Test", match1.Groups[1].Value, "var not valid");

            Assert.IsTrue(match2.Success, "var2 was not found");

            Assert.IsTrue(match3.Success, "table was not found");
            Assert.IsTrue(list.Contains(match3.Groups[1].Value), "list1 not valid");
        }
Esempio n. 25
0
        public void TemplateRenderTest()
        {
            var table = new List <string>
            {
                "Table entry 1",
                "Table entry 2",
                "Table entry 3",
                "Table entry 4"
            };

            var list = new List <string>
            {
                "thing one",
                "thing two",
                "thing three"
            };

            var templateBody =
                @"Table Test

template=[tmp:Test Template ]

Eof
";


            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var template = new Template
            {
                Id           = Guid.Empty,
                Name         = "Template Test",
                Category     = "Test",
                Description  = "Description here",
                Enabled      = true,
                TemplateBody = templateBody
            };

            var result = validator.ValidateTemplate(template).Result;

            var outTemplate = result.Template;
            var errors      = result.ValidationErrors;

            Assert.AreEqual(0, errors.Count, $"Validation errors incorrect : {errors.Count}");
            Assert.AreEqual(1, outTemplate.Fields.Count, $"Fields incorrect : {outTemplate.Fields.Count}");
            Assert.AreEqual(0, outTemplate.TemplateVariables.Count,
                            $"Variable count incorrect : {outTemplate.TemplateVariables.Count}");

            var renderer = new TemplateRenderer(new MockRandomTableService(), new MockTemplateService());

            var render = renderer.RenderTemplateToMarkDown(outTemplate).Result;

            var regex1 = new Regex(@"2d4\+10=([\d-]+)");
            var regex2 = new Regex(@"-6to6=([\d-]+)");
            var regex3 = new Regex(@"^list=([\d\w\s]+)[\r]", RegexOptions.Multiline);
            var regex4 = new Regex(@"^table=(Table entry \d)", RegexOptions.Multiline);

            var match1 = regex1.Match(render);
            var match2 = regex2.Match(render);
            var match3 = regex3.Match(render);
            var match4 = regex4.Match(render);

            int.TryParse(match1.Groups[1].Value, out var val1);
            int.TryParse(match2.Groups[1].Value, out var val2);

            Assert.IsTrue(match1.Success, "2d4+10 was not found");
            Assert.IsTrue(12 <= val1 && val1 <= 18, $"2d4+10 roll not valid: {val1.ToString()}");
            Assert.IsTrue(match2.Success, "-6to6 was not found");
            Assert.IsTrue(-6 <= val2 && val2 <= 6, "-6to6 roll not valid");
            Assert.IsTrue(match3.Success, "list was not found");
            Assert.IsTrue(list.Contains(match3.Groups[1].Value), "list not valid");
            Assert.IsTrue(match4.Success, "Table was not found");
            Assert.IsTrue(table.Contains(match4.Groups[1].Value), "Table not valid");
        }
Esempio n. 26
0
        public void DieRollRenderTest()
        {
            var templateBody =
                @"Die Roll Test

1d6=[die:d6]
12d8=[die:12d8]
2d4+10=[die:2d4+10]
2d10-5=[die:2d10-5]
";


            var validator = new TemplateValidator(new MockRandomTableService(), new MockTemplateService());

            var template = new Template
            {
                Id           = Guid.Empty,
                Name         = "Die Roll Test",
                Category     = "Test",
                Description  = "Description here",
                Enabled      = true,
                TemplateBody = templateBody
            };

            var result = validator.ValidateTemplate(template).Result;

            var outTemplate = result.Template;
            var errors      = result.ValidationErrors;

            Assert.AreEqual(0, errors.Count, $"Validation errors incorrect : {errors.Count}");
            Assert.AreEqual(4, outTemplate.Fields.Count, $"Fields incorrect : {outTemplate.Fields.Count}");
            Assert.AreEqual(0, outTemplate.TemplateVariables.Count,
                            $"Variable count incorrect : {outTemplate.TemplateVariables.Count}");

            var renderer = new TemplateRenderer(new MockRandomTableService(), new MockTemplateService());

            var render = renderer.RenderTemplateToMarkDown(outTemplate).Result;

            var regex1 = new Regex(@"1d6=(\d+)");
            var regex2 = new Regex(@"12d8=(\d+)");
            var regex3 = new Regex(@"2d4\+10=([\d-]+)");
            var regex4 = new Regex(@"2d10-5=([\d-]+)");

            var match1 = regex1.Match(render);
            var match2 = regex2.Match(render);
            var match3 = regex3.Match(render);
            var match4 = regex4.Match(render);

            int.TryParse(match1.Groups[1].Value, out var val1);
            int.TryParse(match2.Groups[1].Value, out var val2);
            int.TryParse(match3.Groups[1].Value, out var val3);
            int.TryParse(match4.Groups[1].Value, out var val4);

            Assert.IsTrue(match1.Success, "1d6 was not found");
            Assert.IsTrue(1 <= val1 && val1 <= 6, $"d6 roll not valid: {val1.ToString()}");
            Assert.IsTrue(match2.Success, "12d8 was not found");
            Assert.IsTrue(12 <= val2 && val2 <= 96, $"12d8 roll not valid: {val2.ToString()}");
            Assert.IsTrue(match3.Success, "2d4+10 was not found");
            Assert.IsTrue(12 <= val3 && val3 <= 18, $"2d4+10 roll not valid: {val3.ToString()}");
            Assert.IsTrue(match4.Success, "2d10-5 was not found");
            Assert.IsTrue(-3 <= val4 && val4 <= 15, $"2d10-5 roll not valid: {val4.ToString()}");
        }