﻿;-- TIME_STAMP   2022-03-10 13:58:40

#include "ErrorList.au3"

#include <File.au3>


_Test_1()
_Clear()

_Test_2()
_Clear()

_Test_3()
_Clear()

_Test_4()
_Clear()




Func _Test_1()
    Local $aFile = _FileListToArray('C:\Gibt-Es-Nicht\Pfad', 1) ; FLTA_FILES
    _ErrorList_Add()

    If @error Then ConsoleWrite(@CRLF & '>> Fehlerwert wird durchgeleitet, @error: ' & @error & @CRLF)

    ; einige Operationen um den Fehlerspeicher neu zu belegen
    ClipPut('irgendwas')
    Local $clip = ClipGet() ; fehlerfrei
    ConsoleWrite('>> ClipGet @error: ' & @error & @CRLF)

    ; Abfrage des letzten registrierten Fehlers als String: "@error|@extended|@ScriptLineNumber|Funktionsaufruf"
    ConsoleWrite('-> ' & _ErrorList_LastError(3) & @CRLF & @CRLF)

    MsgBox(0, 'Test 1', 'Weiter zu Test 2.')
EndFunc


Func _Test_2()
    ; alle Funktionsaufrufe werden der ErrorList hinzugefügt
    ; zuerst fehlerfreie Operationen
    Local $iSizeMyDocs = DirGetSize(@MyDocumentsDir)
    _ErrorList_Add()

    Local $FileTime = FileGetTime(@AutoItExe)
    _ErrorList_Add()

    ; jetzt ein Fehler
    _MakeError()
    _ErrorList_Add()

    ; weiter fehlerfrei
    Local $FileVersion = FileGetVersion(@AutoItExe)
    _ErrorList_Add()

    Local $Attrib = FileGetAttrib(@AutoItExe)
    _ErrorList_Add()

    ; Ausgabe ALLER Aufrufe als Liste in die Console
    _ErrorList_List(False)

    MsgBox(0, 'Test 2', 'Weiter zu Test 3.')
EndFunc


Func _Test_3()
    ; wie Test_2 - aber nur Auflistung der Fehler
    ; alle Funktionsaufrufe werden der ErrorList hinzugefügt
    ; zuerst fehlerfreie Operationen
    Local $iSizeMyDocs = DirGetSize(@MyDocumentsDir)
    _ErrorList_Add()

    Local $FileTime = FileGetTime(@AutoItExe)
    _ErrorList_Add()

    ; jetzt ein Fehler
    _MakeError()
    _ErrorList_Add()

    ; weiter fehlerfrei
    Local $FileVersion = FileGetVersion(@AutoItExe)
    _ErrorList_Add()

    Local $Attrib = FileGetAttrib(@AutoItExe)
    _ErrorList_Add()

    ; Ausgabe NUR FEHLERHAFTER Aufrufe als Liste in die Console (Standard)
    _ErrorList_List()

    MsgBox(0, 'Test 3', 'Weiter zu Test 4.')
EndFunc


Func _Test_4()
    MsgBox(0, 'Test 4', 'ACHTUNG!' & @CRLF & _
        'Jetzt werden alle "_ErrorList_" -Funktionen aus dem Skript gelöscht!' & @CRLF & _
        'Nach Beendigung mit (mehrfachem) Ctrl+Z wieder das Original herstellen.' & @CRLF & _
        'Dann "_ErrorList_Remove" mit dem Parameter "True" versehen und erneut ausführen.' & @CRLF & _
        'Jetzt wird auch die Includezeile aus dem Skript entfernt. - Wiederherstellen, wie vorab.')
    ; Entfernen ALLER Funktionsaufrufe "_ErrorList_..."
    ; mit Parameter "(True)" wird auch die Includezeile gelöscht
    _ErrorList_Remove(True)
EndFunc


Func _Clear()
    $g_aErrList[0][0] = 0
    ReDim $g_aErrList[1][4]
EndFunc


; Generieren von @error- und @extended Werten
Func _MakeError()
    Local $a[] = [-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9]
    Return SetError($a[Random(0,17,1)], $a[Random(9,17,1)])
EndFunc
