void ITestCase.Validate(string encodedSegment) { Segment Segment = Segment.Deserialize(Convert.FromBase64String(encodedSegment)); Segment.Validate(); Link link = Segment.Link(); if (!link.Action().Equals("init")) { throw new Exception("Invalid action: " + link.Action()); } IDictionary <String, Object> data = (SortedDictionary <String, Object>)link.Data(); if (!data["age"].ToString().Equals("42")) { throw new Exception("Invalid data: " + CanonicalJson.Canonicalizer.Stringify(link.Data())); } if (!data["name"].Equals("ʙᴀᴛᴍᴀɴ")) { throw new Exception("Invalid data: " + CanonicalJson.Canonicalizer.Stringify(link.Data())); } if (link.OutDegree() != 3) { throw new Exception("Invalid degree:" + link.OutDegree()); } if (!link.MapId().Equals("test_map")) { throw new Exception("Invalid map id: " + link.MapId()); } if (!link.Metadata().Equals("bruce wayne")) { throw new Exception("Invalid metadata: " + CanonicalJson.Canonicalizer.Stringify(link.Metadata())); } if (link.PrevLinkHash()[0] != 42 || link.PrevLinkHash()[1] != 42) { throw new Exception("Invalid parent: " + System.Text.Encoding.Default.GetString(link.PrevLinkHash())); } if (link.Priority() != 42) { throw new Exception("Invalid priority: " + link.Priority()); } if (!link.Process().Name.Equals("test_process")) { throw new Exception("Invalid process name:" + link.Process().Name); } if (!link.Process().State.Equals("started")) { throw new Exception("Invalid process state: " + link.Process().State); } if (!link.Step().Equals("setup")) { throw new Exception("Invalid step: " + link.Step()); } if (!"tag1".Equals(link.Tags()[0]) || !"tag2".Equals(link.Tags()[1])) { throw new Exception("Invalid tags: " + (Object)link.Tags()); } }