File: test-refractive_indices.pas

package info (click to toggle)
xraylib 4.0.0%2Bdfsg1-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 46,936 kB
  • sloc: ansic: 16,103; f90: 8,746; java: 6,766; python: 1,497; cpp: 1,305; pascal: 1,139; makefile: 809; ruby: 622; php: 594; perl: 573; cs: 193; sh: 125
file content (127 lines) | stat: -rw-r--r-- 3,633 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
program test_refractive_indices;

{$APPTYPE CONSOLE}
{$mode objfpc}
{$h+}

uses xraylib, xrltest, Classes, SysUtils, fpcunit, testreport, testregistry;

type
	TestRefractiveIndices = class(TTestCase)
	private
		procedure _test_bad_input_0;
		procedure _test_bad_input_1;
		procedure _test_bad_input_2;
		procedure _test_bad_input_3;
		procedure _test_bad_input_4;
		procedure _test_bad_input_5;
		procedure _test_bad_input_6;
		procedure _test_bad_input_7;
		procedure _test_bad_input_8;
	published
		procedure test_chemical_formulas;
		procedure test_nist_compounds;
		procedure test_bad_input;
	end;

procedure TestRefractiveIndices.test_chemical_formulas;
var
	cmplx: xrlComplex;
begin
	AssertEquals(Refractive_Index_Re('H2O', 1.0, 1.0), 0.999763450676632, 1.0e-9);
	AssertEquals(Refractive_Index_Im('H2O', 1.0, 1.0), 4.021660592312145e-05, 1.0e-9);
	cmplx := Refractive_Index('H2O', 1.0, 1.0);
	AssertEquals(cmplx.re, 0.999763450676632, 1.0e-9);
	AssertEquals(cmplx.im, 4.021660592312145e-05, 1.0e-9);
end;

procedure TestRefractiveIndices.test_nist_compounds;
var
	cmplx: xrlComplex;
begin
	AssertEquals(Refractive_Index_Re('Air, Dry (near sea level)', 1.0, 1.0), 0.999782559048, 1.0E-12);
	AssertEquals(Refractive_Index_Im('Air, Dry (near sea level)', 1.0, 1.0), 0.000035578193, 1.0E-12);
	cmplx := Refractive_Index('Air, Dry (near sea level)', 1.0, 1.0);
	AssertEquals(cmplx.re, 0.999782559048, 1.0E-12);
	AssertEquals(cmplx.im, 0.000035578193, 1.0E-12);

	AssertEquals(Refractive_Index_Re('Air, Dry (near sea level)', 1.0, 0.0), 0.999999737984, 1.0E-12);
	AssertEquals(Refractive_Index_Im('Air, Dry (near sea level)', 1.0, 0.0), 0.000000042872, 1.0E-12);
	cmplx := Refractive_Index('Air, Dry (near sea level)', 1.0, 0.0);
	AssertEquals(cmplx.re, 0.999999737984, 1.0E-12);
	AssertEquals(cmplx.im, 0.000000042872, 1.0E-12);


	cmplx := Refractive_Index('Air, Dry (near sea level)', 1.0, -1.0);
	AssertEquals(cmplx.re, 0.999999737984, 1.0E-12);
	AssertEquals(cmplx.im, 0.000000042872, 1.0E-12);

end;

procedure TestRefractiveIndices.test_bad_input;
begin
	AssertException(EArgumentException, @_test_bad_input_0);
	AssertException(EArgumentException, @_test_bad_input_1);
	AssertException(EArgumentException, @_test_bad_input_2);
	AssertException(EArgumentException, @_test_bad_input_3);
	AssertException(EArgumentException, @_test_bad_input_4);
	AssertException(EArgumentException, @_test_bad_input_5);
	AssertException(EArgumentException, @_test_bad_input_6);
	AssertException(EArgumentException, @_test_bad_input_7);
	AssertException(EArgumentException, @_test_bad_input_8);
end;

procedure TestRefractiveIndices._test_bad_input_0;
begin
	Refractive_Index_Re('', 1.0, 1.0);
end;
	
procedure TestRefractiveIndices._test_bad_input_1;
begin
	Refractive_Index_Im('', 1.0, 1.0);
end;

procedure TestRefractiveIndices._test_bad_input_2;
begin
	Refractive_Index('', 1.0, 1.0);
end;

procedure TestRefractiveIndices._test_bad_input_3;
begin
	Refractive_Index_Re('H2O', 0.0, 1.0);
end;
	
procedure TestRefractiveIndices._test_bad_input_4;
begin
	Refractive_Index_Im('H2O', 0.0, 1.0);
end;

procedure TestRefractiveIndices._test_bad_input_5;
begin
	Refractive_Index('H2O', 0.0, 1.0);
end;

procedure TestRefractiveIndices._test_bad_input_6;
begin
	Refractive_Index_Re('H2O', 1.0, 0.0);
end;
	
procedure TestRefractiveIndices._test_bad_input_7;
begin
	Refractive_Index_Im('H2O', 1.0, 0.0);
end;

procedure TestRefractiveIndices._test_bad_input_8;
begin
	Refractive_Index('H2O', 1.0, 0.0);
end;

var
	App: TestRunner;
begin
	RegisterTest(TestRefractiveIndices);
	App := TestRunner.Create(nil);
	App.Initialize;
	App.Run;
	App.Free;
end.