public void Test_That_Returned_Object_Contains_Modifications() { var testClass = new Immutable <TestClass>(); var newTestClass = testClass.Modify(x => x.Test = 2); newTestClass.Get(x => x.Test).ShouldBe(2); }
public void Test_That_Returned_Object_Contains_Modifications() { var testClass = new Immutable<TestClass>(); var newTestClass = testClass.Modify(x => x.Test, 2); Assert.Equal(newTestClass.Get(x => x.Test), 2); }
public void Test_That_Modify_Uses_Defined_Setter() { var testClass = new Immutable <TestWithSetter>(); var newTestClass = testClass.Modify(x => x.Test = 2); newTestClass.Get(x => x.Test).ShouldBe(4); }
public void Test_That_Original_Object_Cannot_Be_Modified() { var testClass = new Immutable<TestClass>(); var newTestClass = testClass.Modify(x => x.Test, 1); Assert.Equal(testClass.Get(x => x.Test), 0); }
public void Test_That_Original_Object_Cannot_Be_Modified() { var testClass = new Immutable <TestClass>(); var newTestClass = testClass.Modify(x => x.Test = 1); testClass.Get(x => x.Test).ShouldBe(0); }
public void Test_That_Modify_Can_Alter_Converted_Nullables() { var testClass = new Immutable <TestNullableClass>(); decimal?testDecimal = null; testClass = testClass.Modify(x => x.Nullable = (int?)testDecimal); testClass.Get(x => x.Nullable).ShouldBeNull(); }
public void Test_That_Modifying_Nested_Returns_Modifications() { var testClass = new Immutable <TestClass>(); var newTestClass = testClass.Modify(x => x.Data = testClass.Get(t => t.Data) .Modify(t => t.Member = 2) ); newTestClass.Get(x => x.Data.Get(y => y.Member)).ShouldBe(2); }
public void Test_That_Modifying_Nested_Object_Keeps_Original_Unmodified() { var testClass = new Immutable <TestClass>(); var newTestClass = testClass.Modify(x => x.Data = testClass.Get(t => t.Data) .Modify(t => t.Member = 2) ); testClass.Get(x => x.Data.Get(y => y.Member)).ShouldBe(0); }
public void Test_That_Modifying_Nested_Object_Keeps_Original_Unmodified() { var testClass = new Immutable<TestClass>(); var newTestClass = testClass.Modify(x => x.Data, testClass.Get(x => x.Data) .Modify(x => x.Member, 2) ); Assert.Equal(testClass.Get(x => x.Data.Get(y => y.Member)), 0); }
public void Test_That_Getting_Self_Returns_Clone() { var testClass = new Immutable <TestClass>(); testClass = testClass.Modify(x => x.Test = 5); var self = testClass.Get(x => x); self.Test = 6; testClass.Get(x => x.Test).ShouldNotBe(self.Test); }
public void Test_That_System_Text_Json_Serialization_Is_Correct() { var testClass = new Immutable <TestClassMember>(); testClass = testClass.Modify(x => x.Member = 1); var settings = new JsonSerializerOptions(); settings.Converters.Add(new ImmutableDotNet.Serialization.Json.ImmutableJsonConverter()); var json = System.Text.Json.JsonSerializer.Serialize(testClass, settings); json.ShouldBe(@"{""Member"":1,""Member2"":0}"); }
public void Test_That_JSON_NET_Serialization_Is_Correct() { var testClass = new Immutable <TestClassMember>(); testClass = testClass.Modify(x => x.Member = 1); var settings = new JsonSerializerSettings(); settings.Converters.Add(new ImmutableJsonConverter()); var json = JsonConvert.SerializeObject(testClass, settings); json.ShouldBe(@"{""Member"":1,""Member2"":0}"); }
public void Test_Protobuf_Serialization_Round_Trip() { var testClass = new Immutable <TestClassMember>(); testClass = testClass.Modify(x => x.Member = 1); var stream = new MemoryStream(); Serializer.Serialize(stream, testClass); stream.Seek(0, SeekOrigin.Begin); var deserialized = Serializer.Deserialize <Immutable <TestClassMember> >(stream); deserialized.Get(x => x.Member).ShouldBe(1); deserialized.Get(x => x.Member2).ShouldBe(0); }
async Task <Immutable <CfnResponse> > CreateSeed(CfnRequest cfnRequest, Immutable <CfnResponse> cfnResponse, ILambdaContext context) { try { var seedData = cfnRequest.ResourceProperties.SeedData; if (seedData == null || seedData.Count() == 0 || (seedData.Count() == 1 && string.IsNullOrEmpty(seedData.First()))) { return(cfnResponse); } var request = seedData.Select(seed => { return(new SaveItemRequest { Id = "U1", Name = "This is a custom data inserted using a custom resource", Key = seed }); }); var result = await _itemService.BatchWrite(request); if (result != null) { LogHandler.LogMessage(context, "Db seeding successful"); return(cfnResponse.Modify(r => r.Status = "SUCCESS")); } else { LogHandler.LogMessage(context, "Db seeding failed"); return(cfnResponse.ToBuilder() .Modify(r => r.Status = "FAILED") .Modify(r => r.Reason = $"Resource: {_tableName} not found") .ToImmutable()); } } catch (Exception ex) { LogHandler.LogMessage(context, ex.StackTrace); return(cfnResponse.ToBuilder() .Modify(r => r.Status = "FAILED") .Modify(r => r.Reason = ex.Message) .ToImmutable()); } }
async Task <Immutable <CfnResponse> > DeleteTable(CfnRequest cfnRequest, Immutable <CfnResponse> cfnResponse, ILambdaContext context) { try { await _itemService.DeleteTable(); await _userService.DeleteTable(); LogHandler.LogMessage(context, $"Request {cfnRequest.RequestType} executed Successfully"); return(cfnResponse.Modify(r => r.Status = "SUCCESS")); } catch (Exception ex) { LogHandler.LogMessage(context, $"Message: {ex.Message} /Trace: {ex.StackTrace}"); return(cfnResponse.ToBuilder() .Modify(r => r.Status = "FAILED") .Modify(r => r.Reason = ex.Message) .ToImmutable()); } }
void DoSomething(Immutable <Entity> entity) { string name = entity.Get(e => e.Name); Immutable <Entity> renamed = entity .Modify(e => e.Name = "new name"); }
public void Test_Modify_Nested_With_Implicit_Conversion() { var testClass = new Immutable<TestClass>(); var newTestClass = testClass.Modify(x => x.Data, testClass.Get(x => x.Data) .Modify(x => x.Member, 2.0M) ); Assert.Equal(newTestClass.Get(x => x.Data.Get(y => y.Member)), 2); }
public void Test_That_Modify_Can_Alter_Converted_Nullables() { var testClass = new Immutable<TestNullableClass>(); decimal? testDecimal = null; testClass = testClass.Modify(x => x.Nullable, testDecimal); Assert.Null(testClass.Get(x => x.Nullable)); }
public void Immutable_Microbenchmark() { var stopwatch = new Stopwatch(); var testClass = new TestClass(); var testClassImmutable = new Immutable<TestClass>(); stopwatch.Start(); for(var i = 0; i < 100000; i++) { testClass.Test = i; } stopwatch.Stop(); var setterTime = stopwatch.ElapsedMilliseconds; stopwatch.Reset(); stopwatch.Start(); for(var i = 0; i < 100000; i++) { testClassImmutable.Modify(x => x.Test, i); } stopwatch.Stop(); var immutableTime = stopwatch.ElapsedMilliseconds; }
public void Test_That_Modifying_Nested_Returns_Modifications() { var testClass = new Immutable<TestClass>(); var newTestClass = testClass.Modify(x => x.Data, testClass.Get(x => x.Data) .Modify(x => x.Member, 2) ); Assert.Equal(newTestClass.Get(x => x.Data.Get(y => y.Member)), 2); }