public void TryReadRecord_MultipleRecordsInEnumerable_AllRecordsAreRead() { var recordsRead = 0; var records = new List <object>() { new object(), new object() }; var enumerableReader = new EnumerableReader(records); bool couldReadRecord; IEnumerable <FieldFailure> failures; do { couldReadRecord = enumerableReader.TryReadRecord(out var record, out failures); if (couldReadRecord) { Assert.AreEqual(records[recordsRead++], record); Assert.IsNull(failures); } }while (couldReadRecord || failures?.Count() > 0); Assert.AreEqual(records.Count, recordsRead); }
private static void VisualizeSky(EnumerableReader <Star> stars, int minX, int maxX) { for (Star star = stars.TakeFirst(), nextStar = null; star != null; star = nextStar) { var builder = new StringBuilder(new string(Enumerable.Repeat('.', 1 + maxX - minX).ToArray())); int y = star.Position.Y; builder[star.Position.X - minX] = '#'; for (nextStar = stars.TakeFirst(); nextStar != null && nextStar.Position.Y == star.Position.Y; nextStar = stars.TakeFirst()) { builder[nextStar.Position.X - minX] = '#'; } Console.WriteLine(builder); if (nextStar != null) { for (int i = star.Position.Y + 1; i < nextStar.Position.Y; i++) { builder = new StringBuilder(new string(Enumerable.Repeat('.', 1 + maxX - minX).ToArray())); Console.WriteLine(builder); } } } }
public void TryReadRecord_OneRecordThatFailsToMap_RecordIsNotReadAndFailureIsReturned() { var records = new List <object>() { new object() }; var failures = new List <FieldFailure>() { new FieldFailure() }; var recordMapper = MockRepository.GenerateMock <IRecordMapper>(); recordMapper.Stub(x => x.TryMap( Arg <object> .Is.Equal(records[0]), out Arg <object> .Out(null).Dummy, out Arg <IEnumerable <FieldFailure> > .Out(failures).Dummy)) .Return(false); var enumerableReader = new EnumerableReader(records, recordMapper); var couldReadRecord = enumerableReader.TryReadRecord(out var returnedRecord, out var returnedFailures); Assert.IsFalse(couldReadRecord); Assert.IsNull(returnedRecord); Assert.AreEqual(failures, returnedFailures); }
public void TryReadRecord_EmptyEnumerable_ZeroRecordsAreRead() { var records = new List <object>() { }; var enumerableReader = new EnumerableReader(records); var couldReadRecord = enumerableReader.TryReadRecord(out var record, out var failures); Assert.IsFalse(couldReadRecord); }
private static LicenseNode GetNode(EnumerableReader <int> input) { var numChildren = input.TakeFirst(); var numMetadata = input.TakeFirst(); var children = new LicenseNode[numChildren]; for (int i = 0; i < numChildren; i++) { children[i] = GetNode(input); } return(new LicenseNode(children, input.TakeN(numMetadata))); }
static void Main(string[] args) { var licenseInput = GetLicenseInput(); var licenseReader = new EnumerableReader <int>(licenseInput); var rootNode = GetNode(licenseReader); Console.WriteLine($"Part 1: Sum of metadata: {rootNode.MetadataSum}"); Console.WriteLine(""); Console.WriteLine($"Part 2: Value of root node: {rootNode.Value}"); Console.WriteLine(""); Console.WriteLine("Done"); Console.ReadKey(); }
public void TryReadRecord_OneRecordInEnumerableWithRecordMapper_OneRecordIsMappedAndRead() { var recordsRead = 0; var records = new List <object>() { new object() }; var mappedRecords = new List <object>() { new object() }; var recordMapper = MockRepository.GenerateMock <IRecordMapper>(); recordMapper.Expect(x => x.TryMap( Arg <object> .Is.Equal(records[0]), out Arg <object> .Out(mappedRecords[0]).Dummy, out Arg <IEnumerable <FieldFailure> > .Out(null).Dummy)) .Return(true) .Repeat.Once(); var enumerableReader = new EnumerableReader(records, recordMapper); bool couldReadRecord; IEnumerable <FieldFailure> failures; do { couldReadRecord = enumerableReader.TryReadRecord(out var record, out failures); if (couldReadRecord) { Assert.AreEqual(mappedRecords[recordsRead++], record); Assert.IsNull(failures); } }while (couldReadRecord || failures?.Count() > 0); recordMapper.VerifyAllExpectations(); Assert.AreEqual(records.Count, recordsRead); }