⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testcaseblock.out

📁 格式化源码的最新板
💻 OUT
字号:
unit TestCaseBlock;

{ AFS 5 Feb 2K

  This code compiles, but is not semantically meaningfull.
  It is test cases for the code-formating utility

  this unit test the case statement indentation }

interface

implementation

uses SysUtils, Controls, Math;

procedure FromBorlandsStyleGuide;

// the defs are quite bogus, but they make the code compile
const
  csStart   = 1;
  csBegin   = 2;
  csTimeOut = 3;
  csFoo     = 12;
  csBar     = 20;
  UpdateValue = 200;

  SB_LINEUP   = 1;
  SB_LINEDOWN = 2;
  SB_PAGEUP   = 3;
  SB_PAGEDOWN = 4;
var
  Control: TControl;
  NewRange, Position, AlignMargin: integer;
  x, y, j, ScrollCode: integer;
  Incr, FIncrement, FLineDiv, FinalIncr, Count: integer;
  FPageIncrement, FPageDiv: integer;
begin
  NewRange := Max(NewRange, Position);

  // CORRECT
  case Control.Align of
    alLeft, alNone: NewRange := Max(NewRange, Position);
    alRight: Inc(AlignMargin, Control.Width);
  end;


  // CORRECT
  case x of

    csStart:
    begin
      j := UpdateValue;
    end;

    csBegin: x := j;
    csFoo:
      x := j;

    csTimeOut:
    begin
      j := x;
      x := UpdateValue;
    end;

  end;

  // CORRECT
  case ScrollCode of
    SB_LINEUP, SB_LINEDOWN:
    begin
      Incr      := FIncrement div FLineDiv;
      FinalIncr := FIncrement mod FLineDiv;
      Count     := FLineDiv;
    end;
    SB_PAGEUP, SB_PAGEDOWN:
    begin
      Incr      := FPageIncrement;
      FinalIncr := Incr mod FPageDiv;
      Incr      := Incr div FPageDiv;
      Count     := FPageDiv;
    end;
    else
      Count     := 0;
      Incr      := 0;
      FinalIncr := 0;
  end;


  // anthony's additions to test differing styles:

  // naked cases, complex labels, no else
  case x of
    csStart, csBegin:
      j := UpdateValue;
    csFoo .. CsBar, 23:
      j := x + 1;
    csTimeOut:
      j := x;
  end;

  // naked cases, complex labels, an else
  case x of
    csStart, csBegin:
      j := UpdateValue;
    csFoo .. CsBar, 23:
      j := x + 1;
    csTimeOut: j := x;
    else
      Inc(j);
  end;

  // block cases, complex labels, no else
  case x of
    csStart, csBegin:
    begin
      j := UpdateValue;
      j := x;
      x := x + UpdateValue;
    end;
    csFoo .. CsBar, 23:
    begin
      j := x + 1;
      j := x;
      x := x + UpdateValue;
    end;
    csTimeOut:
    begin
      j := x;
      j := j + 1;
    end;
  end;

  // block cases, complex labels, an else
  case x of
    csStart, csBegin:
    begin
      j := UpdateValue;
      j := x;
      x := x + UpdateValue;
    end;
    csFoo .. CsBar, 23:
    begin
      j := x + 1;
      j := x;
    end;
    csTimeOut:
    begin
      j := x;
      j := j + 1;
      x := x + UpdateValue;
    end;
    else
    begin
      Inc(j);
      j := UpdateValue;
      x := x + UpdateValue;
    end;
  end;

  // naked else
  case x of
    csStart, csBegin:
      j := UpdateValue;
    else
      Inc(j);
      j := UpdateValue;
      x := x + UpdateValue;
  end;

  // naked else with funky stuff therein
  case x of
    csStart, csBegin:
      j := UpdateValue;
    else
      if j > 3 then // last remaining indent anomaly - this is not an else..if
        Inc(j);
      if x > 4 then
        j := UpdateValue;
      if x = 5 then
        x := x + UpdateValue;
  end;

  // naked else with funky stuff therein
  case x of
    csStart, csBegin:
      j := UpdateValue;
    else
      x := 3;
      if j > 3 then
      begin
        Inc(j);
      end;
  end;

  case x of
    csStart, csBegin:
      j := UpdateValue;
    else
      x := 3;
      if j > 3 then
      begin
        Inc(j);
      end;
      case y of
        csStart, csBegin:
          j := UpdateValue;
        else
          x := 3;
          if j > 3 then
          begin
            Inc(j);
          end;
      end;
  end;

end;

procedure SimpleCase;
var
  li: integer;
begin
  li := Random(5);

  case li of
    0: li := 1;
    1:
      li  := li + 1;
    2:
    begin
      li := li + 1;
    end;
    else
      li := 0;
  end;
end;

procedure CharCase;
var
  ch, ch2: char;
  li:      integer;
begin
  li := Random(5);

  ch :=
    'a';
  ch := char(Ord(ch) + li);

  case ch of
    'a': li := 1;
    'b':
      li    := li + 1;
    'c':
    begin
      li := li + 1;
    end;
    'd': ch2 :=
        'e';
    else
      li := 0;
  end;

  ch :=
    'a';

end;


procedure ComplexCase;
var
  iA, IB: integer;
  bA:     boolean;
  liLoop, liLoop2: integer;
begin
  iA := Random(10);
  iB := Random(10);

  if iA > 5 then
    bA := True
  else
    bA := False;

  { the case for 4 is something else, huh?
   unreadable as it gets wehn on one line,
   but it compiles fine
   note that the last 'else' in the proc is the default case,
   not part of the if in case 5:
   so it should be lined up with the 5:}
  case Random(7) of
    1: iA := 0;
    2: for liLoop := 1 to 10 do
        iA := iA + Random(2);
    3: if iA > 5 then
        ba := False
      else
        ba := True;
    14: if iA > 5 then
        for liLoop := 1 to 10 do
          iA := iA + Random(2)
      else
        while IA < 50 do
          iA := iA + Random(5);
    5:
      if iA > 6 then
        for liLoop := 1 to 10 do
          iA := iA + Random(2);
    else
      while IA < 50 do
        iA := iA + Random(5);
  end;

end;

procedure LayOutMyCaseStatement;
var
  iA, iB1, iCC2: integer;
begin

  // empty statement
  ;
  ;
  ;
  ;
  ;

  if Random(10) > 4 then
  begin
    iA := Random(20);
    case iA of
      1: iA := 10;
      2:
        iA  := Random(1000);
      3:
      begin
        iA  := Random(1000);
        iB1 := iA + 10;
      end;
      34: ; // do nothing
      5:
        case Random(2) of
          0:
            iA := 1;
          1:
            iA := 0;
          else
            iA := 4;
        end;

      else
      begin
        raise Exception.Create('this sucks');

      end;

    end; { case }

  end; { if }

end;



{ test nested cases }

procedure TestNested;
var
  iA: integer;
begin

  case Random(7) of
    0: iA := 0;
    1: case Random(2) of
        0: iA := 1;
        2: iA := 2;
      end;
    2: case Random(2) of
        0: iA := 1;
        2: case Random(2) of
            0: iA := 1;
            2: iA := 2;
          end;
      end;
    3: case Random(2) of
        0: iA := 1;
        2: case Random(2) of
            0: iA := 1;
            2: case Random(2) of
                0: iA := 1;
                2: iA := 2;
              end;
          end;
      end;
    4: case Random(2) of
        0: case Random(2) of
            0: iA := 1;
            2: iA := 2;
          end;
        2: case Random(2) of
            0: iA := 1;
            2: case Random(2) of
                0: iA := 1;
                2: iA := 2;
              end;
          end;
      end;
    5: case Random(2) of
        0: case Random(2) of
            0: iA := 1;
            2: iA := 2;
          end;
        2: case Random(2) of
            0: case Random(2) of
                0: iA := 1;
                2: iA := 2;
              end;
            2: case Random(2) of
                0: iA := 1;
                2: iA := 2;
              end;
          end;
      end;
    6: case Random(2) of
        0: case Random(2) of
            0: iA := 1;
            2: iA := 2;
          end;
        2: case Random(2) of
            0: case Random(2) of
                0: iA := 1;
                2: iA := 2;
              end;
            2: case Random(2) of
                0: iA := 1;
                2: case Random(2) of
                    0: iA := 1;
                    2: iA := 2;
                  end;
              end;
          end;
      end;
  end;
end;

procedure TestElse;
var
  li: integer;
begin

  case Random(7) of
    0:
      li := 1;
    else
      li := 0;
  end;

  case Random(7) of
    0:
      li := 1;
    else
    begin
      li := 0;
    end;
  end;

  case Random(7) of
    0:
      li := 1;
    else
    begin
      case Random(7) of
        0:
          li := 1;
        else
          li := 0;
      end;
    end;
  end;

  case Random(7) of
    0:
      li := 1;
    else
    begin
      case Random(7) of
        0:
          li := 1;
        else
        begin
          case Random(7) of
            0:
              li := 1;
            else
              li := 0;
          end;
        end;
      end;
    end;
  end;

end;


end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -