static bool ReverseCall_TakeStru_Exp_DecAsCYAsFldByOutRef([Out] out Stru_Exp_DecAsCYAsFld s) { s.dec = CY_MAX_VALUE; s.wc = 'C'; return(true); }
static extern bool TakeStru_Exp_DecAsCYAsFldByInOutRef([Out] out Stru_Exp_DecAsCYAsFld s);
static bool MarshalAsCurrencyScenario() { Console.WriteLine("MarshalAsCurrencyScenario started."); //CY decimal cy = CY_MAX_VALUE; if (!TakeCYAsInOutParamAsLPStructByRef(ref cy)) { Console.WriteLine("Test Failed: TakeCYAsInOutParamAsLPStructByRef : Returned false"); return(false); } if (CY_MIN_VALUE != cy) { Console.WriteLine($"Test Failed: Expected 'CY_MIN_VALUE'. Got {cy}."); return(false); } cy = decimal.MaxValue; if (!TakeCYAsOutParamAsLPStructByRef(out cy)) { Console.WriteLine("Test Failed: TakeCYAsOutParamAsLPStructByRef : Returned false"); return(false); } if (CY_MIN_VALUE != cy) { Console.WriteLine($"Test Failed: Expected 'CY_MIN_VALUE'. Got {cy}."); return(false); } bool exceptionThrown = false; try { RetCY(); } catch (MarshalDirectiveException) { exceptionThrown = true; } if (!exceptionThrown) { Console.WriteLine("Expected MarshalDirectiveException from RetCY() not thrown"); return(false); } cy = RetCYStruct().dec; if (cy != CY_MIN_VALUE) { Console.WriteLine($"Test Failed: RetCYStruct. Expected 'CY_MIN_VALUE'. Got '{cy}'."); return(false); } Stru_Exp_DecAsCYAsFld s = new Stru_Exp_DecAsCYAsFld(); s.cy = CY_MAX_VALUE; s.wc = 'I'; if (!TakeStru_Exp_DecAsCYAsFldByInOutRef(out s)) { Console.WriteLine("Test Failed: TakeStru_Exp_DecAsCYAsFldByInOutRef : Returned false"); return(false); } if (!TakeStru_Exp_DecAsCYAsFldByInOutRef(out s)) { if (CY_MAX_VALUE != s.cy) { Console.WriteLine($"Test Failed: Expected 'CY_MAX_VALUE'. Got {s.cy}."); return(false); } } if ('C' != s.wc) { Console.WriteLine($"Test Failed: Expected 'C'. Got {s.wc}."); return(false); } Console.WriteLine("MarshalAsCurrencyScenario end."); return(true); }