private BindingContext() { InlinePartialTemplates = new CascadeDictionary <string, Action <EncodedTextWriter, BindingContext> >(); RootDataObject = new FixedSizeDictionary <ChainSegment, object, ChainSegment.ChainSegmentEqualityComparer>(16, 7, ChainSegment.EqualityComparer); ContextDataObject = new FixedSizeDictionary <ChainSegment, object, ChainSegment.ChainSegmentEqualityComparer>(16, 7, ChainSegment.EqualityComparer); BlockParamsObject = new FixedSizeDictionary <ChainSegment, object, ChainSegment.ChainSegmentEqualityComparer>(16, 7, ChainSegment.EqualityComparer); _objectDescriptor = new DeferredValue <BindingContext, ObjectDescriptor>(this, context => ObjectDescriptor.Create(context.Value, context.Configuration)); }
public IteratorValues(BindingContext bindingContext) : this() { _data = bindingContext.ContextDataObject; _wellKnownVariables = bindingContext.WellKnownVariables; _data.AddOrReplace(ChainSegment.Value, null, out _wellKnownVariables[(int)ChainSegment.Value.WellKnownVariable]); _data.AddOrReplace(ChainSegment.First, BoxedValues.True, out _wellKnownVariables[(int)ChainSegment.First.WellKnownVariable]); _data.AddOrReplace(ChainSegment.Last, BoxedValues.False, out _wellKnownVariables[(int)ChainSegment.Last.WellKnownVariable]); _data.AddOrReplace(ChainSegment.Index, BoxedValues.Zero, out _wellKnownVariables[(int)ChainSegment.Index.WellKnownVariable]); }
public void Copy() { var keys = new object[245]; var values = new object[245]; for (int i = 0; i < 245; i++) { keys[i] = new object(); values[i] = new object(); } var indexes = new EntryIndex <object> [245]; for (int i = 0; i < 245; i++) { var key = keys[i]; var value = values[i]; FixedSizeDictionary.AddOrReplace(key, value, out var index); indexes[i] = index; Assert.True(FixedSizeDictionary.ContainsKey(index)); Assert.True(FixedSizeDictionary.ContainsKey(key)); Assert.True(FixedSizeDictionary.TryGetValue(key, out var actualValue)); Assert.Equal(value, actualValue); Assert.True(FixedSizeDictionary.TryGetValue(index, out actualValue)); Assert.Equal(value, actualValue); } var destination = new FixedSizeDictionary <object, object, EqualityComparers.ReferenceEqualityComparer <object> >(15, 17, new EqualityComparers.ReferenceEqualityComparer <object>()); FixedSizeDictionary.CopyTo(destination); FixedSizeDictionary.Clear(); for (int i = 0; i < 245; i++) { var key = keys[i]; var value = values[i]; destination.TryGetIndex(key, out var index); Assert.True(destination.ContainsKey(index)); Assert.True(destination.ContainsKey(key)); Assert.True(destination.TryGetValue(key, out var actualValue)); Assert.Equal(value, actualValue); Assert.True(destination.TryGetValue(index, out actualValue)); Assert.Equal(value, actualValue); } }
private BindingContext() { InlinePartialTemplates = new CascadeIndex <string, Action <EncodedTextWriter, BindingContext>, StringEqualityComparer>(new StringEqualityComparer(StringComparison.OrdinalIgnoreCase)); Bag = new CascadeIndex <string, object, StringEqualityComparer>(new StringEqualityComparer(StringComparison.OrdinalIgnoreCase)); ContextDataObject = new FixedSizeDictionary <ChainSegment, object, ChainSegment.ChainSegmentEqualityComparer>(16, 7, ChainSegment.EqualityComparer); BlockParamsObject = new FixedSizeDictionary <ChainSegment, object, ChainSegment.ChainSegmentEqualityComparer>(16, 7, ChainSegment.EqualityComparer); Descriptor = new DeferredValue <BindingContext, ObjectDescriptor>(this, context => { return(ObjectDescriptor.Create(context.Value)); }); }
public void TryGetEntry_Empty_ShouldReturnFalse() { // Arrange KeyValuePair <string, int>[] source = Array.Empty <KeyValuePair <string, int> >(); FixedSizeDictionary <int> dictionary = FixedSizeDictionary <int> .Create(source, x => x.Key, x => x.Value); // Act bool value = dictionary.TryGetEntry(new Fixture().Create <string>(), out FixedSizeDictionary <int> .Entry entry); // Assert value.ShouldBeFalse(); entry.ShouldBe(default);
public void Create_IncreasesCountCorrectly(int elementsCount) { // Arrange KeyValuePair <string, int>[] source = new Fixture { RepeatCount = elementsCount }.CreateMany <KeyValuePair <string, int> >().Distinct().ToArray(); // Act FixedSizeDictionary <int> dictionary = FixedSizeDictionary <int> .Create(source, x => x.Key, x => x.Value); // Assert dictionary.Count.ShouldBe(source.Length); }
public BlockParamsValues(BindingContext context, ChainSegment[] variables) { _variables = variables; if (context != null) { _values = context.BlockParamsObject; _configuration = context.Configuration; } else { _values = null; _configuration = null; } }
internal HelperOptions( TemplateDelegate template, TemplateDelegate inverse, ChainSegment[] blockParamsValues, BindingContext frame ) { _extensions = frame.Extensions; OriginalTemplate = template; OriginalInverse = inverse; Frame = frame; BlockParams = blockParamsValues; }
public void TryGetEntry_ExistingKey_ShouldReturnEntryAndTrue(int elementsCount) { // Arrange var fixture = new Fixture { RepeatCount = elementsCount }; KeyValuePair <string, int>[] source = fixture.CreateMany <KeyValuePair <string, int> >().Distinct().ToArray(); var keyValuePair = elementsCount is 0 ? fixture.Create <KeyValuePair <string, int> >() : source.RandomElement(); FixedSizeDictionary <int> dictionary = FixedSizeDictionary <int> .Create(source, x => x.Key, x => x.Value); // Act bool value = dictionary.TryGetEntry(keyValuePair.Key, out FixedSizeDictionary <int> .Entry entry); // Assert value.ShouldBeTrue(); entry.Key.ShouldBe(keyValuePair.Key); entry.Value.ShouldBe(keyValuePair.Value); }
public ObjectIteratorValues(BindingContext bindingContext) : this() { var configuration = bindingContext.Configuration; _data = bindingContext.ContextDataObject; _supportLastInObjectIterations = configuration.Compatibility.SupportLastInObjectIterations; _wellKnownVariables = bindingContext.WellKnownVariables; if (!_supportLastInObjectIterations) { var undefined = UndefinedBindingResult.Create(ChainSegment.Last); _data.AddOrReplace(ChainSegment.Last, undefined, out _wellKnownVariables[(int)ChainSegment.Last.WellKnownVariable]); } else { _data.AddOrReplace(ChainSegment.Last, BoxedValues.False, out _wellKnownVariables[(int)ChainSegment.Last.WellKnownVariable]); } _data.AddOrReplace(ChainSegment.Key, null, out _wellKnownVariables[(int)ChainSegment.Key.WellKnownVariable]); _data.AddOrReplace(ChainSegment.Value, null, out _wellKnownVariables[(int)ChainSegment.Value.WellKnownVariable]); _data.AddOrReplace(ChainSegment.First, BoxedValues.True, out _wellKnownVariables[(int)ChainSegment.First.WellKnownVariable]); _data.AddOrReplace(ChainSegment.Index, BoxedValues.Zero, out _wellKnownVariables[(int)ChainSegment.Index.WellKnownVariable]); }
public BlockParamsValues(BindingContext context, ChainSegment[] variables) { _variables = variables; _values = context?.BlockParamsObject; }
public void Create_DuplicateKeys_Throws() { // Arrange IEnumerable <int> source = new Fixture().CreateMany <int>(); // Act & Assert InvalidOperationException exception = Should.Throw <InvalidOperationException>(() => FixedSizeDictionary <int> .Create(source, _ => "Duplicate", x => x)); exception.Message.ShouldContain("same key"); }
public void CalculateCapacity_ReturnsCorrectValue(int size, int expected) { FixedSizeDictionary <int> .CalculateCapacity(size).ShouldBe(expected); }
public DataValues(BindingContext context) { _data = context.ContextDataObject; _wellKnownVariables = context.WellKnownVariables; }
static FixedSizeDictionaryTests() { var referenceEqualityComparer = new EqualityComparers.ReferenceEqualityComparer <object>(); FixedSizeDictionary = new FixedSizeDictionary <object, object, EqualityComparers.ReferenceEqualityComparer <object> >(15, 17, referenceEqualityComparer); }