public Alignment Generate(string creatureName) { var weightedAlignments = collectionSelector.ExplodeAndPreserveDuplicates(TableNameConstants.Collection.AlignmentGroups, creatureName); var randomAlignment = collectionSelector.SelectRandomFrom(weightedAlignments); return(new Alignment(randomAlignment)); }
public IEnumerable <string> ExplodeAndPreserveDuplicates(string tableName, string collectionName) { var assembly = assemblyLoader.GetRunningAssembly(); var key = assembly.FullName + tableName + collectionName; lock (myLock) { if (!cachedExplodedWithDuplicatesCollections.ContainsKey(key)) { var explodedCollection = innerSelector.ExplodeAndPreserveDuplicates(tableName, collectionName); cachedExplodedWithDuplicatesCollections.Add(key, explodedCollection); } } return(cachedExplodedWithDuplicatesCollections[key]); }
public void Explode_CacheResults_WithoutDuplicates() { mockInnerSelector .Setup(s => s.Explode("table name", "my entry")) .Returns(new[] { "entry 1", "entry 2" }); mockInnerSelector .Setup(s => s.ExplodeAndPreserveDuplicates("table name", "my entry")) .Returns(new[] { "entry 1", "entry 2", "entry 2" }); proxy.ExplodeAndPreserveDuplicates("table name", "my entry"); proxy.Explode("table name", "my entry"); var result = proxy.Explode("table name", "my entry"); Assert.That(result, Is.EqualTo(new[] { "entry 1", "entry 2" })); mockInnerSelector.Verify(p => p.Explode(It.IsAny <string>(), It.IsAny <string>()), Times.Once); mockInnerSelector.Verify(p => p.ExplodeAndPreserveDuplicates(It.IsAny <string>(), It.IsAny <string>()), Times.Once); }