File: testpen.pas

package info (click to toggle)
lazarus 2.0.10%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 219,188 kB
  • sloc: pascal: 1,867,962; xml: 265,716; cpp: 56,595; sh: 3,005; java: 609; makefile: 568; perl: 297; sql: 222; ansic: 137
file content (83 lines) | stat: -rw-r--r-- 2,185 bytes parent folder | download | duplicates (8)
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
unit TestPen;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, fpcunit,
  Interfaces, LCLType, LCLIntf,
  testglobals;

type

  { TTestPen }

  TTestPen = class(TTestCase)
  published
    procedure TestOne;
    procedure TestTwo;
  end;

implementation

{ TTestPen }

procedure TTestPen.TestOne;
var
  APen: HPEN;
  LP, Test: TLogPen;
begin
  LP.lopnColor := $FF0000;
  LP.lopnStyle := PS_DASHDOTDOT;
  LP.lopnWidth := Point(2, 0);
  APen := CreatePenIndirect(LP);
  AssertFalse('Creating of APen failed', APen = 0);
  //  APen created
  AssertEquals('Wrong return value of GetObject(APen, 0, nil)',
     SizeOf(TLogPen), GetObject(APen, 0, nil));
  GetObject(APen, SizeOf(Test), @Test);
  AssertTrue( 'Pens are not equal', CompareMem(@Test, @LP, SizeOf(TLogPen)));
  DeleteObject(APen);
end;

procedure TTestPen.TestTwo;
const
  Dashes: array[0..3] of DWord = (1, 1, 1, 1);
  PenStyle: DWord = PS_GEOMETRIC or PS_USERSTYLE or PS_ENDCAP_FLAT;
  PenWidth: DWord = 1;
var
  lb: TLogBrush;
  Pen: HPen;
  DataSize: Integer;
  ExtPen: PExtLogPen;
begin
  lb.lbColor := $FF;
  lb.lbHatch := 0;
  lb.lbStyle := BS_SOLID;
  Pen := ExtCreatePen(PenStyle, PenWidth, lb, Length(Dashes), @Dashes);
  AssertFalse('Creating of Pen failed', Pen = 0);
  // Pen created
  DataSize := GetObject(Pen, 0, nil);
  AssertEquals('Wrong return value of GetObject(Pen, 0, nil)',
     SizeOf(TExtLogPen) + (Length(Dashes) - 1) * SizeOf(DWord), DataSize);

  ExtPen := AllocMem(DataSize);
  GetObject(Pen, DataSize, ExtPen);
  AssertEquals('Pen Style is not equal', PenStyle, ExtPen^.elpPenStyle);
  AssertEquals('Pen Width is not equal', PenWidth, ExtPen^.elpWidth);
  AssertEquals('Pen Color is not equal', lb.lbColor, ExtPen^.elpColor);
  AssertEquals('Pen Hatch is not equal', lb.lbHatch, ExtPen^.elpHatch);
  AssertEquals('Pen Brush Style is not equal', lb.lbStyle, ExtPen^.elpBrushStyle);
  AssertEquals('Pen Dashes Count is not equal', Length(Dashes), ExtPen^.elpNumEntries);
  AssertTrue('Pen Dashes are not equal', CompareDWord(Dashes[0], ExtPen^.elpStyleEntry[0], ExtPen^.elpNumEntries)=0);

  FreeMem(ExtPen);
  DeleteObject(Pen);
end;

initialization
  AddToLCLTestSuite(TTestPen);

end.