public WordMatrixService()
 {
     _rulesRepository  = new RulesRepository();
     _valuesRepository = new ValuesRepository();
     _wordsRepository  = new WordsRepository();
     _cypherRepository = new CypherRepository();
 }
Ejemplo n.º 2
0
        public async Task RulesUpdated_OnRulesChangeEventHasBeenFired()
        {
            // Arrange
            var timesCalled = 0;

            var versions     = new ReplaySubject <string>(1);
            var versionsMock = new Mock <IRulesetVersionProvider>();

            versionsMock.Setup(x => x.OnVersion()).Returns(versions);

            var driverMock = new Mock <IRulesDriver>();

            driverMock.Setup(x => x.GetRuleset(It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new Dictionary <string, RuleDefinition>()));

            var repository = new RulesRepository(driverMock.Object, versionsMock.Object, TimeSpan.Zero, TimeSpan.FromMinutes(1));

            repository.OnRulesChange += rules => Interlocked.Increment(ref timesCalled);

            // Act
            versions.OnNext("10001");
            await Task.Delay(10);

            versions.OnNext("10002");
            await Task.Delay(10);

            versions.OnNext("10003");
            await Task.Delay(10);

            // Assert
            Assert.Equal("10003", repository.CurrentLabel);
            Assert.Equal(3, timesCalled);
        }
Ejemplo n.º 3
0
        private object RulesRepositoryFactory(IUnityContainer container)
        {
            RulesRepository rulesRepository = new RulesRepository();

            Rules.AddTo(rulesRepository);
            return(rulesRepository);
        }
Ejemplo n.º 4
0
        public void TestTryLoadExistingRulesList()
        {
            DirectoryInfo   di = new DirectoryInfo(rulesFolder);
            RulesRepository rr = new RulesRepository("testRules", di);

            string ruleListFile = string.Format("{0}{1}{2}.rul", rulesFolder, Path.DirectorySeparatorChar, rr.Name);

            if (!File.Exists(ruleListFile))
            {
                rr.TryLoadNewRulesList();
                rr.TrySaveRulesList();
                if (!File.Exists(ruleListFile))
                {
                    Assert.Fail("Can not run test TestTryLoadExistingRulesList.  No existing rule file was found, and a new one could not be created");
                }
            }

            rr.TryLoadExistingRulesList();
            Assert.AreEqual(2, rr.MyRules.Count, "Invalid number of Rules loaded by TryLoadRulesList");
            foreach (Rule currentRule in rr.MyRules.Values)
            {
                switch (currentRule.FriendlyName)
                {
                case "SetValue":
                case "IncrementValue":
                    break;

                default:
                    Assert.Fail("Unexpected rule file loaded from the Repository.");
                    break;
                }
            }
        }
Ejemplo n.º 5
0
        public async Task ExceptionThrown_ShouldRecoverFromException()
        {
            var versions     = new ReplaySubject <string>(1);
            var versionsMock = new Mock <IRulesetVersionProvider>();

            versionsMock.Setup(x => x.OnVersion()).Returns(versions);

            var driverMock = new Mock <IRulesDriver>();

            driverMock.Setup(x => x.GetRuleset(It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new Dictionary <string, RuleDefinition>()));

            var repository = new RulesRepository(driverMock.Object, versionsMock.Object, TimeSpan.Zero, TimeSpan.FromMinutes(1));

            // Act
            versions.OnNext("10001");
            await Task.Delay(10);

            var newVersions = new ReplaySubject <string>(1);

            newVersions.OnNext("10002");
            versionsMock.Setup(x => x.OnVersion()).Returns(newVersions);

            versions.OnError(new Exception());

            await Task.Delay(20);

            // Assert
            Assert.Equal("10002", repository.CurrentLabel);
        }
Ejemplo n.º 6
0
        public async Task VersionsTimeout_ResubscribeToVersions()
        {
            // Arrange
            var scheduler = new TestScheduler();

            var versionsMock = new Mock <IRulesetVersionProvider>();

            versionsMock.Setup(x => x.OnVersion()).Returns(Observable.Never <string>());

            var driverMock = new Mock <IRulesDriver>();

            driverMock.Setup(x => x.GetRuleset(It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new Dictionary <string, RuleDefinition>()));

            var repository = new RulesRepository(driverMock.Object, versionsMock.Object, TimeSpan.Zero, TimeSpan.FromMinutes(10), scheduler: scheduler);

            // Act
            await Task.Delay(10);

            var versions = new ReplaySubject <string>(1);

            versions.OnNext("10001");
            versionsMock.Setup(x => x.OnVersion()).Returns(versions);

            scheduler.AdvanceBy(TimeSpan.FromMinutes(11).Ticks);

            await Task.Delay(10);

            // Assert
            Assert.Equal("10001", repository.CurrentLabel);
        }
Ejemplo n.º 7
0
        public void RuleAvailableInRepository()
        {
            var repository = new RulesRepository();

            Rules.AddTo(repository);
            Assert.That(repository.Get(RuleName), Is.Not.Null);
            Assert.That(repository.GetAll(), Has.One.Matches(Has.Property("Name").EqualTo(RuleName)));
        }
Ejemplo n.º 8
0
 //[TearDown]
 public void TearDown()
 {
     DeviceRepository.Clear();
     AccessKeyRepository.Clear();
     WorkflowRepository.Clear();
     RulesRepository.Clear();
     ScheduleRepository.Clear();
 }
Ejemplo n.º 9
0
 public void Setup()
 {
     _rulesRepo           = new RulesRepository();
     _rulesRepoMock       = new Mock <IRulesRepository>();
     _balanceProviderMock = new Mock <IBalanceProvider>();
     _monthlyProviderMock = new Mock <IMonthlyJobProvider>();
     _rulesController     = new RulesController(_balanceProviderMock.Object, _monthlyProviderMock.Object);
     _rulesRepoMock.Setup(x => x.GetMinBalance(It.IsAny <int>())).Returns(1000);
     _balanceProviderMock.Setup(x => x.GetMinBalance(It.IsAny <int>())).Returns(1000);
 }
Ejemplo n.º 10
0
        static void Main(string[] args)
        {
            factory         = new CommandFactory();
            rulesRepository = new RulesRepository();
            Console.WriteLine("This is the getting ready app. Please enter a weather type and a list of commands.");
            Console.WriteLine("If you need help, enter \"help\", if you are finished, enter \"exit\"\n");
            string input;

            while ((input = Console.ReadLine()).ToLower() != "exit")
            {
                RunProgram(input);
            }
        }
Ejemplo n.º 11
0
        public static void Main(string[] args)
        {
            PrintGreeting();

            if (args.Length == 0)
            {
                PrintUsage();
                Environment.Exit(0);
            }

            string slnFile = Path.GetFullPath(args[0]);

            if (!File.Exists(slnFile))
            {
                Console.WriteLine("Specified parameter is expected to be an existing Visual Studio solution file.");
                Console.WriteLine("Parameter: {0}", args[0]);
                Environment.Exit(-1);
            }

            Console.WriteLine("Analyzing solution {0}", slnFile);
            Console.WriteLine();

            ISolution     solution = SolutionReader.Read(slnFile);
            List <IIssue> issues   = new List <IIssue>();

            foreach (IRule rule in RulesRepository.GetAllRules())
            {
                issues.AddRange(rule.Apply(solution));
            }

            if (issues.Count == 0)
            {
                Console.WriteLine("No issues were found.");
            }
            else
            {
                string lastFile = null;
                foreach (IIssue issue in issues.OrderBy(x => x.File))
                {
                    if (lastFile != issue.File)
                    {
                        Console.WriteLine("File: {0}", issue.File);
                        lastFile = issue.File;
                    }

                    Console.WriteLine("[{0}] {1}", issue.Code, issue.Text);
                }

                Environment.ExitCode = -1;
            }
        }
Ejemplo n.º 12
0
        public void Setup()
        {
            m_RuleOne = Substitute.For <IRule>();
            m_RuleOne.Priority.Returns(2);
            m_RuleTwo = Substitute.For <IRule>();
            m_RuleTwo.Priority.Returns(1);

            m_Rules = new[]
            {
                m_RuleOne,
                m_RuleTwo
            };

            m_Sut = new RulesRepository(m_Rules);
        }
Ejemplo n.º 13
0
        public static void WriteAutofacDependencies(string fileLocation)
        {
            var builder = new ContainerBuilder();

            //Хардкод, разобраться с этим. Вообще, сделать или фабрику, или чтобы передавались аргументы конструктора
            IRulesRepository repository       = new RulesRepository(fileLocation);
            var groupSelector                 = new MyGroupSelector();
            var subgroupSelector              = new MySubgroupSelector();
            var detailSelector                = new MyDetailSelector();
            IMainWindowViewModel mainVindowVM = new MainWindowViewModel(repository, groupSelector, subgroupSelector, detailSelector);

            //Синглтон, неприемлемо, разобраться с этим
            builder.RegisterInstance <IMainWindowViewModel>(mainVindowVM);

            DI.DIContainer.Container = builder.Build();
        }
Ejemplo n.º 14
0
        public JObject PostRule([FromBody] JObject body, string accessKey = null)
        {
            if (!AccessKeyHelper.CanAdminRules(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return(null);
            }

            var ruleObj = new Rule(body);

            RulesRepository.Add(ruleObj);
            return(ruleObj.ToJObject());

            //var id = body["id"]?.ToString();
            //return RulesRepository.Get(id).ToJObject();
        }
Ejemplo n.º 15
0
        public ActionResult Add(EditVM model)
        {
            if (!ModelState.IsValid)
            {
                return(PartialView("~/Views/Partials/Edits/_EditComment.cshtml", model));
            }

            RulesRepository repo = new RulesRepository();
            Rule            item = new Rule();

            model.PopulateEntity(item);

            repo.Save(item);

            return(Content(""));
        }
Ejemplo n.º 16
0
        public ActionResult Add(int?id, int?SubRedditId)
        {
            Rule item = null;

            RulesRepository repo = new RulesRepository();

            item = id == null ? new Rule() : repo.GetById(id.Value);

            EditVM model = item == null ? new EditVM() : new EditVM(item);

            if (model.Id <= 0)
            {
                model.SubRedditId = SubRedditId.Value;
            }

            return(PartialView("~/Views/Partials/Edits/_EditRules.cshtml", model));
        }
Ejemplo n.º 17
0
        public void DeleteRule(string id, string accessKey = null)
        {
            if (!AccessKeyHelper.CanAdminRules(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return;
            }

            var ruleObj = RulesRepository.Get(id);

            if (ruleObj == null)
            {
                Response.StatusCode = StatusCodes.Status404NotFound;
                return;
            }

            RulesRepository.Delete(ruleObj);
        }
Ejemplo n.º 18
0
        public void TestTrySaveRulesList()
        {
            DirectoryInfo   di = new DirectoryInfo(rulesFolder);
            RulesRepository rr = new RulesRepository("testRules", di);

            string ruleListFile = string.Format("{0}{1}{2}.rul", rulesFolder, Path.DirectorySeparatorChar, rr.Name);

            if (File.Exists(ruleListFile))
            {
                File.SetAttributes(ruleListFile, FileAttributes.Normal);
                File.Delete(ruleListFile);
            }

            //Load a new rule list so that we have something to save.
            rr.TryLoadNewRulesList();
            rr.TrySaveRulesList();
            Assert.IsTrue(File.Exists(ruleListFile), "TrySaveRulesList failed to create the rule file");
        }
Ejemplo n.º 19
0
        public JArray GetRules(string accessKey = null)
        {
            if (!AccessKeyHelper.CanAdminRules(accessKey))
            {
                Response.StatusCode = StatusCodes.Status401Unauthorized;
                return(null);
            }

            var jArray = new JArray();

            foreach (var ruleObj in RulesRepository.Get())
            {
                var jObj = ruleObj.ToJObject();
                jArray.Add(jObj);
            }

            return(jArray);
        }
Ejemplo n.º 20
0
        public void TestProcessRule()
        {
            DirectoryInfo   di = new DirectoryInfo(rulesFolder);
            RulesRepository rr = new RulesRepository("testRules", di);

            //Load a new rule list so that we have rules to execute.
            rr.TryLoadNewRulesList();

            TestClass tc = new TestClass();
            Dictionary <string, object> contextObjects = new Dictionary <string, object>();

            contextObjects.Add("TestObject", tc);

            IBRERuleResult ruleResult;

            rr.ProcessRule("SetValue", contextObjects, out ruleResult);

            Assert.AreEqual(5, tc.MyValue, "The rule processed, but did not correctly set the value on the test object");
        }
        public void GetAllRules_SameProviderInstances_ReturnsExpectedRulesForLanguage()
        {
            var jsonFilePath = GetRuleDefinitionFilePath("RuleDefns_CheckLanguageFiltering.json");

            var testSubject = new RulesRepository(jsonFilePath);

            // 1. TypeScript
            var tsProvider = (ITypeScriptRuleDefinitionsProvider)testSubject;
            var tsRuleKeys = tsProvider.GetDefinitions()
                             .Select(x => x.RuleKey);

            tsRuleKeys.Should().BeEquivalentTo("typescript:S2092", "typescript:S3524", "TypeSCRIPT:S1135");

            // 2. JavaScript
            var jsProvider = (IJavaScriptRuleDefinitionsProvider)testSubject;
            var jsRuleKeys = jsProvider.GetDefinitions()
                             .Select(x => x.RuleKey);

            jsRuleKeys.Should().BeEquivalentTo("javascript:S1135", "JAVASCRIPT:xyz");
        }
Ejemplo n.º 22
0
        public void TestTryLoadNewRulesList()
        {
            DirectoryInfo   di = new DirectoryInfo(rulesFolder);
            RulesRepository rr = new RulesRepository("testRules", di);

            rr.TryLoadNewRulesList();
            Assert.AreEqual(2, rr.MyRules.Count, "Invalid number of Rules loaded by TryLoadRulesList");
            foreach (Rule currentRule in rr.MyRules.Values)
            {
                switch (currentRule.FriendlyName)
                {
                case "SetValue":
                case "IncrementValue":
                    break;

                default:
                    Assert.Fail("Unexpected rule file loaded from the Repository.");
                    break;
                }
            }
        }
        public void LoadRuleMetadataFromFile()
        {
            // There should be a copy of the rules metadata file in the test bin directory
            var filePath = Path.Combine(
                Path.GetDirectoryName(this.GetType().Assembly.Location),
                "ts\\sonarlint-metadata.json"
                );

            File.Exists(filePath).Should().BeTrue("Test setup error: could not find rule metadata file. Expected path: " + filePath);

            // Sanity check that the json file is loadable and has rules
            var rulesProvider = new RulesRepository(filePath);

            var jsRules = ((IJavaScriptRuleDefinitionsProvider)rulesProvider).GetDefinitions();

            CheckRules("JavaScript", jsRules);

            var tsRules = ((ITypeScriptRuleDefinitionsProvider)rulesProvider).GetDefinitions();

            CheckRules("TypeScript", tsRules);
        }
Ejemplo n.º 24
0
        public override ActionResult Edit(EditVM model)
        {
            if (!ModelState.IsValid)
            {
                return(PartialView("~/Views/Partials/Edits/_EditSubreddit.cshtml", model));
            }
            RulesRepository      ruleRepo = new RulesRepository();
            SubRedditsRepository repo     = new SubRedditsRepository();
            SubReddit            item     = new SubReddit();

            model.PopulateEntity(item);
            model.Rules = ruleRepo.GetAll(a => a.SubRedditId == item.Id);
            repo.Save(item);

            model.Id = item.Id;

            // като създадеш събреддит, автоматично ставаш мод и се събскрайбваш за него
            repo.AddAdminToSubReddit(model.Id, model.UserId);
            repo.Subscribe(model.Id, model.UserId);

            return(Content(""));
        }
Ejemplo n.º 25
0
        public StudentViewModel()
        {
            StatusItems.Add(new SelectListItem
            {
                Text  = "Confirmed",
                Value = "Confirmed"
            });
            StatusItems.Add(new SelectListItem
            {
                Text  = "Waiting",
                Value = "Waiting"
            });

            //get Courses list
            CoursesRepository coursesRepository = new CoursesRepository();

            CoursesList = coursesRepository.GetAllCourses();

            RulesRepository rulesRepository = new RulesRepository();

            RulesList = rulesRepository.GetAllRules();
        }
Ejemplo n.º 26
0
        public async Task WhenVersionIsNewer_ShouldUpdateTheRules()
        {
            // Arrange
            var versions     = new ReplaySubject <string>(1);
            var versionsMock = new Mock <IRulesetVersionProvider>();

            versionsMock.Setup(x => x.OnVersion()).Returns(versions);

            var driverMock = new Mock <IRulesDriver>();

            var repository = new RulesRepository(driverMock.Object, versionsMock.Object, TimeSpan.Zero, TimeSpan.FromMinutes(1));

            // Act/Assert
            driverMock.Setup(x => x.GetRuleset(It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(
                         new Dictionary <string, RuleDefinition> {
                { "test_rule1", new RuleDefinition() }
            }));
            versions.OnNext("10001");

            var result = await repository.GetAllRules();

            Assert.Equal("10001", repository.CurrentLabel);
            Assert.Equal("test_rule1", result.Keys.Single());

            driverMock.Setup(x => x.GetRuleset(It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(
                         new Dictionary <string, RuleDefinition> {
                { "test_rule2", new RuleDefinition() }
            }));
            versions.OnNext("10002");
            await Task.Delay(10);

            result = await repository.GetAllRules();

            Assert.Equal("10002", repository.CurrentLabel);
            Assert.Equal("test_rule2", result.Keys.Single());
        }
Ejemplo n.º 27
0
        public async Task WhenGivenEmptyRules_ShouldReturnExpectedVersionAndEmptyRules()
        {
            // Arrange
            var versions = new ReplaySubject <string>(1);

            versions.OnNext("10001");
            var versionsMock = new Mock <IRulesetVersionProvider>();

            versionsMock.Setup(x => x.OnVersion()).Returns(versions);

            var driverMock = new Mock <IRulesDriver>();

            driverMock.Setup(x => x.GetRuleset(It.IsAny <string>(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(new Dictionary <string, RuleDefinition>()));

            var repository = new RulesRepository(driverMock.Object, versionsMock.Object, TimeSpan.Zero, TimeSpan.FromMinutes(1));

            // Act
            var result = await repository.GetAllRules();

            // Assert
            Assert.Equal("10001", repository.CurrentLabel);
            Assert.Empty(result);
        }
Ejemplo n.º 28
0
        public void TestTryLoadNewRulesList()
        {
            DirectoryInfo di = new DirectoryInfo(rulesFolder);
            RulesRepository rr = new RulesRepository("testRules", di);

            rr.TryLoadNewRulesList();
            Assert.AreEqual(2, rr.MyRules.Count, "Invalid number of Rules loaded by TryLoadRulesList");
            foreach (Rule currentRule in rr.MyRules.Values)
            {
                switch (currentRule.FriendlyName)
                {
                    case "SetValue":
                    case "IncrementValue":
                        break;
                    default:
                        Assert.Fail("Unexpected rule file loaded from the Repository.");
                        break;
                }
            }
        }
Ejemplo n.º 29
0
 public static RulesRepository With(this RulesRepository target, string path, IRule rule)
 {
     return(Merge(target, With(path, rule)));
 }
Ejemplo n.º 30
0
        public void TestTryLoadExistingRulesList()
        {
            DirectoryInfo di = new DirectoryInfo(rulesFolder);
            RulesRepository rr = new RulesRepository("testRules", di);

            string ruleListFile = string.Format("{0}{1}{2}.rul", rulesFolder, Path.DirectorySeparatorChar, rr.Name);
            if (!File.Exists(ruleListFile))
            {
                rr.TryLoadNewRulesList();
                rr.TrySaveRulesList();
                if (!File.Exists(ruleListFile))
                {
                    Assert.Fail("Can not run test TestTryLoadExistingRulesList.  No existing rule file was found, and a new one could not be created");
                }
            }

            rr.TryLoadExistingRulesList();
            Assert.AreEqual(2, rr.MyRules.Count, "Invalid number of Rules loaded by TryLoadRulesList");
            foreach (Rule currentRule in rr.MyRules.Values)
            {
                switch (currentRule.FriendlyName)
                {
                    case "SetValue":
                    case "IncrementValue":
                        break;
                    default:
                        Assert.Fail("Unexpected rule file loaded from the Repository.");
                        break;
                }
            }
        }
Ejemplo n.º 31
0
        public static GetRuleValue GetRulesEvaluator(HashSet <Identity> identities, GetLoadedContextByIdentityType contextByIdentity, RulesRepository rules)
        {
            var identityTypes  = identities.Select(x => x.Type).ToArray();
            var flattenContext = ContextHelpers.FlattenLoadedContext(contextByIdentity);

            GetRuleValue    getRuleValue     = null;
            GetContextValue recursiveContext = key =>
            {
                if (key.StartsWith("@@key:"))
                {
                    key = key.Replace("@@key:", "keys.");
                }
                if (!key.StartsWith("keys."))
                {
                    return(Option <JsonValue> .None);
                }
                var path = new ConfigurationPath(key.Split('.')[1]);
                return(getRuleValue(path).Map(x => x.Value));
            };

            var context = ContextHelpers.Merge(flattenContext, recursiveContext);

            getRuleValue = Memoize(path =>
            {
                foreach (var identity in identityTypes)
                {
                    var fixedResult = ContextHelpers.GetFixedConfigurationContext(context, identity)(path);
                    if (fixedResult.IsSome)
                    {
                        return(fixedResult);
                    }
                }
                return(rules(path).Bind(x => x.GetValue(context)));
            });
            return(getRuleValue);
        }
Ejemplo n.º 32
0
        public void TestProcessRule()
        {
            DirectoryInfo di = new DirectoryInfo(rulesFolder);
            RulesRepository rr = new RulesRepository("testRules", di);

            //Load a new rule list so that we have rules to execute.
            rr.TryLoadNewRulesList();

            TestClass tc = new TestClass();
            Dictionary<string, object> contextObjects = new Dictionary<string, object>();
            contextObjects.Add("TestObject", tc);

            IBRERuleResult ruleResult;
            rr.ProcessRule("SetValue", contextObjects, out ruleResult);

            Assert.AreEqual(5, tc.MyValue, "The rule processed, but did not correctly set the value on the test object");
        }
Ejemplo n.º 33
0
 public BalanceProvider()
 {
     _rules = new RulesRepository();
 }
Ejemplo n.º 34
0
        public void TestTrySaveRulesList()
        {
            DirectoryInfo di = new DirectoryInfo(rulesFolder);
            RulesRepository rr = new RulesRepository("testRules", di);

            string ruleListFile = string.Format("{0}{1}{2}.rul", rulesFolder, Path.DirectorySeparatorChar, rr.Name);
            if (File.Exists(ruleListFile))
            {
                File.SetAttributes(ruleListFile, FileAttributes.Normal);
                File.Delete(ruleListFile);
            }

            //Load a new rule list so that we have something to save.
            rr.TryLoadNewRulesList();
            rr.TrySaveRulesList();
            Assert.IsTrue(File.Exists(ruleListFile), "TrySaveRulesList failed to create the rule file");
        }