コード例 #1
0
        public RangeVisitor(SemanticModel model, INumericType <T> root, Action <Diagnostic> reportDiagnostic)
            : base(model, reportDiagnostic)
        {
            _Root = root;

            // INumericType<T> methods
            AddITypeTMethods();
        }
コード例 #2
0
 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;
     }
 }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
 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;
     }
 }