public RangeVisitor(SemanticModel model, INumericType <T> root, Action <Diagnostic> reportDiagnostic) : base(model, reportDiagnostic) { _Root = root; // INumericType<T> methods AddITypeTMethods(); }
private void Range(InvocationExpressionSyntax node, Action <T> addRange) { if (TryGetConstant(node.GetArgument(0).Expression, out T value)) { if (_Root != null) { addRange(value); } } else { _Root = null; } }
private static void AssertChunks(INumericType <float> type, params float[] expectedChunks) { Assert.AreEqual(expectedChunks.Length, 2 * type.Chunks.Count, $"Bad chunk parts count {type}"); var i = 0; var index = 0; foreach (var chunk in type.Chunks) { ++index; Assert.AreEqual(expectedChunks[i], chunk.Min, $"Chunks[{index}].Min"); ++i; Assert.AreEqual(expectedChunks[i], chunk.Max, $"Chunks[{index}].Max"); ++i; } }
private void Range(InvocationExpressionSyntax node, Action <T, T> addRange) { if (TryGetConstant(node.GetArgument(0).Expression, out T min) & TryGetConstant(node.GetArgument(1).Expression, out T max)) { if (min.CompareTo(max) > 0) { ReportDiagnostic(SmartTestsDiagnostics.CreateMinShouldBeLessThanMax(node, min.ToString(), max.ToString())); } else if (_Root != null) { addRange(min, max); } } else { _Root = null; } }