public void CleanExerciseReportFile() { var reader = ExerciseReader.CSharpExerciseReader; var outputs = reader.ReadExercises(); var efh = new ExerciseFileHandler(PathNames.Default.Root, Constants.CSharpTrack); var ejp = new ExerciseJsonParser(); var json = ejp.ToString(outputs.ExerciseObjectTree); efh.WriteFile(json); }
public void ParseExerciseJson_WithInvalidDocType_ReportsFatalError() { var ejp = new ExerciseJsonParser(); var json = Utils.GetResourceAsString( Constants.ExercisesBadDocTypeResource); var outputs = ejp.FromString(json); Assert.Equal(Result.FatalError, outputs.Result); Assert.Contains(nameof(Exercise.CompletionStatus), outputs.Errors[0].Message); }
public void ParseExerciseJson_WithSlightlyWrongStructure_ReportsFatalError() { var ejp = new ExerciseJsonParser(); var json = Utils.GetResourceAsString( Constants.ExercisesSlightlyWrongResource); var outputs = ejp.FromString(json); Assert.Equal(Result.FatalError, outputs.Result); Assert.Contains("Json parser failed", outputs.Errors[0].Message); }
public void ParseExerciseJson_WithMissingFields_ReportsErrors() { var ejp = new ExerciseJsonParser(); var json = Utils.GetResourceAsString( Constants.ExercisesMissingFieldsResource); var outputs = ejp.FromString(json); Assert.Equal(Result.Errors, outputs.Result); Assert.Equal(5, outputs.Errors.Count); }
public void ParseExerciseJson_WithWrongStructure_ReportsFatalError() { var ejp = new ExerciseJsonParser(); var json = Utils.GetResourceAsString( Constants.ExercisesWrongStructureResource); var outputs = ejp.FromString(json); Assert.Equal(Result.FatalError, outputs.Result); Assert.Contains(nameof(ExerciseObjectTree), outputs.Errors[0].Message); }
public void ParseExerciseJson_WithNonJsonSyntax_ReportsFatalError() { var ejp = new ExerciseJsonParser(); var json = Utils.GetResourceAsString( Constants.ManyDesignsResource); var outputs = ejp.FromString(json); Assert.Equal(Result.FatalError, outputs.Result); Assert.Contains("'#' is an invalid start", outputs.Errors[0].Message); }
public void ParseExerciseJson_WithInvalidLevel_ReportFatalsError() { var ejp = new ExerciseJsonParser(); var json = Utils.GetResourceAsString( Constants.ExercisesBadLevelResource); var outputs = ejp.FromString(json); Assert.Equal(Result.FatalError, outputs.Result); Assert.Contains(nameof(Exercise.Level), outputs.Errors[0].Message); }
public void ParseExerciseJson_WithMissingInessentialFields_ReportsNoErrors() { var ejp = new ExerciseJsonParser(); var json = Utils.GetResourceAsString( Constants.ExercisesMinimalValidResource); var outputs = ejp.FromString(json); Assert.Equal(Result.Success, outputs.Result); Assert.Empty(outputs.Errors); }
public void CreateExerciseFile_FromOriginalConceptsDoc_ProducesValidTree() { var cdi = new ConceptsDocImporter(); var tnci = new TrackNeutralConceptsImporter(); var efc = new ExerciseFileWriter(cdi, tnci); var exerciseFile = efc.CreateExerciseFileFromConceptsDoc(); var efh = new ExerciseJsonParser(); string result = efh.ToString(exerciseFile); Assert.NotNull(exerciseFile); }
public void ParseExerciseJson_WithMissingLevel_ReportsErrors() { var ejp = new ExerciseJsonParser(); var json = Utils.GetResourceAsString( Constants.ExercisesMissingLevelResource); var outputs = ejp.FromString(json); Assert.Equal(Result.Errors, outputs.Result); Assert.Single(outputs.Errors); Assert.Contains("level", outputs.Errors[0].Message); }
public void ParseExerciseJson_WithOtioseDocLink_ReportsErrors() { var ejp = new ExerciseJsonParser(); var json = Utils.GetResourceAsString( Constants.ExercisesOtioseDocumentLinkResource); var outputs = ejp.FromString(json); Assert.Equal(Result.Errors, outputs.Result); Assert.Single(outputs.Errors); Assert.Contains("document-link: present", outputs.Errors[0].Message); }
public void ParseExerciseJson_ForEmptyString_ReportsErrors() { var ejp = new ExerciseJsonParser(); var json = Utils.GetResourceAsString( Constants.ExercisesEmptyResource); var outputs = ejp.FromString(json); Assert.Equal(Result.FatalError, outputs.Result); Assert.Single(outputs.Errors); Assert.Contains("does not contain any JSON tokens", outputs.Errors[0].Message); }
public void ParseExerciseJson_WithMissingDocType_ReportsErrors() { var ejp = new ExerciseJsonParser(); var json = Utils.GetResourceAsString( Constants.ExercisesMissingDocumentTypeResource); var outputs = ejp.FromString(json); Assert.Equal(Result.Errors, outputs.Result); Assert.Single(outputs.Errors); Assert.Contains("completion-status", outputs.Errors[0].Message); }
public void Serialize_ExerciseFile_ProducesWellFormedJson() { var erh = new ExerciseJsonParser(); var actual = erh.ToString(ObjectHierarchy.Sample1); Stream?resourceStream = this.GetType().Assembly.GetManifestResourceStream(JsonSample1); if (resourceStream == null) { throw new NullException($"{nameof(resourceStream)}"); } string expected; using (resourceStream) using (var reader = new StreamReader(resourceStream)) expected = reader.ReadToEnd(); Assert.Equal(expected.Trim(), actual.Trim()); }
public void Deserialize_WellFormedJson_ProducesObjectTree() { var erh = new ExerciseJsonParser(); var expected = ObjectHierarchy.Sample1; Stream?resourceStream = this.GetType().Assembly.GetManifestResourceStream(JsonSample1); if (resourceStream == null) { throw new NullException($"{nameof(resourceStream)}"); } string sampleJson; using (resourceStream) using (var reader = new StreamReader(resourceStream)) sampleJson = reader.ReadToEnd(); var actual = erh.FromString(sampleJson); var actualString = erh.ToString(actual.Item2); Assert.Equal(sampleJson, actualString); // Assert.Equal(expected, actual); // xunit says they don't match. I wonder if it's checking attributes. }