using System.Collections.Generic;
public Value(decimal? gross, decimal? net, bool expected)
ExpectedValidationResult = expected;
public decimal? Gross {get; set;}
public decimal? Net {get; set;}
public bool ExpectedValidationResult {get; set;}
public override string ToString()
return "Gross: " + Gross.ToString() + ", Net: " + Net.ToString() + ", ExpectedValidationResult: " + ExpectedValidationResult.ToString();
public static void Main()
List<Value> values = new List<Value>() {
new Value(null, 0, true),
new Value(0, null, true),
new Value(null, null, true),
new Value(-10, -5, true),
new Value(-5, -10, false),
foreach (var val in values)
bool result = ValidateGrossAndNet(val.Gross, val.Net);
Console.WriteLine("Test Passed: " + (result == val.ExpectedValidationResult).ToString() + "; " + val.ToString());
public static bool ValidateGrossAndNet(decimal? gross, decimal? net)
if (!gross.HasValue || !net.HasValue)
if (gross < 0 && net > 0 || gross > 0 && net < 0)
if (gross < 0 && net < gross)
if (gross > 0 && net > gross)