[r347]: / trunk / Library / POUs / FB_TestSuite / AssertEquals / svnobj  Maximize  Restore  History

Download this file

335 lines (335 with data), 37.1 kB

Gx_lشگ!0…jüoôplà[¦¸'|DذSystem.StringL{f8a58466-d7f6-439f-bbb8-d4600e41d099}ImplementationL{3b83b776-fb25-43b8-99f2-3c507c9143fc}TextDocumentL{f3878285-8e4f-490b-bb1b-9acbb7eb04db}TextLinesL{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}	Id
longTagText
HIF GVL_CfUnit.IgnoreCurrentTest THEN    RETURN;END_IFNAnyComparator(AnyValueOne := Expected, 4			AnyValueTwo := Actual);ج(* First check whether the input data are any of the standard data types that are supported by TcUnit.ش   In this case call the standard Assert-methods for that data. But before doing that we need to make sureJ   that both the expected and actual:B   - Have both the same data typeB   - Both have the same data size*)¨IF NOT AnyComparator.DataTypesNotEquals AND NOT AnyComparator.DataSizeNotEquals THEN    (* BOOL *)‍    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_BOOL THEN®		MEMCPY(destAddr := ADR(boolExpected), srcAddr := Expected.pValue, n := SIZEOF(BOOL));²        MEMCPY(destAddr := ADR(boolActual), srcAddr := Actual.pValue, n := SIZEOF(BOOL));¼        AssertEquals_BOOL(Expected := boolExpected, Actual := boolActual, Message := Message);        RETURN;     END_IF!    (* BYTE *)"‍    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_BYTE THEN#؛        MEMCPY(destAddr := ADR(byteExpected), srcAddr := Expected.pValue, n := SIZEOF(BYTE));$²        MEMCPY(destAddr := ADR(byteActual), srcAddr := Actual.pValue, n := SIZEOF(BYTE));%¼        AssertEquals_BYTE(Expected := byteExpected, Actual := byteActual, Message := Message);&    (* DATE *)'‍    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_DATE THEN(؛        MEMCPY(destAddr := ADR(dateExpected), srcAddr := Expected.pValue, n := SIZEOF(DATE));)²        MEMCPY(destAddr := ADR(dateActual), srcAddr := Actual.pValue, n := SIZEOF(DATE));*¼        AssertEquals_DATE(Expected := dateExpected, Actual := dateActual, Message := Message);+.    (* DATE_AND_TIME *),¬    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_DATEANDTIME THEN-ع        MEMCPY(destAddr := ADR(dateAndTimeExpected), srcAddr := Expected.pValue, n := SIZEOF(DATE_AND_TIME));.ز        MEMCPY(destAddr := ADR(dateAndTimeActual), srcAddr := Actual.pValue, n := SIZEOF(DATE_AND_TIME));/ê        AssertEquals_DATE_AND_TIME(Expected := dateAndTimeExpected, Actual := dateAndTimeActual, Message := Message);0    (* DINT *)1‍    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_DINT THEN2؛        MEMCPY(destAddr := ADR(dintExpected), srcAddr := Expected.pValue, n := SIZEOF(DINT));3²        MEMCPY(destAddr := ADR(dintActual), srcAddr := Actual.pValue, n := SIZEOF(DINT));4¼        AssertEquals_DINT(Expected := dintExpected, Actual := dintActual, Message := Message);5    (* DWORD *)6     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_DWORD THEN7¾        MEMCPY(destAddr := ADR(dwordExpected), srcAddr := Expected.pValue, n := SIZEOF(DWORD));8¶        MEMCPY(destAddr := ADR(dwordActual), srcAddr := Actual.pValue, n := SIZEOF(DWORD));9آ        AssertEquals_DWORD(Expected := dwordExpected, Actual := dwordActual, Message := Message);:    (* INT *);œ    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_INT THEN<¶        MEMCPY(destAddr := ADR(intExpected), srcAddr := Expected.pValue, n := SIZEOF(INT));=®        MEMCPY(destAddr := ADR(intActual), srcAddr := Actual.pValue, n := SIZEOF(INT));>¶        AssertEquals_INT(Expected := intExpected, Actual := intActual, Message := Message);?    (* LINT *)@‍    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_LINT THENA؛        MEMCPY(destAddr := ADR(lintExpected), srcAddr := Expected.pValue, n := SIZEOF(LINT));B²        MEMCPY(destAddr := ADR(lintActual), srcAddr := Actual.pValue, n := SIZEOF(LINT));C¼        AssertEquals_LINT(Expected := lintExpected, Actual := lintActual, Message := Message);D    (* LREAL *)E     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_LREAL THENF¾        MEMCPY(destAddr := ADR(lrealExpected), srcAddr := Expected.pValue, n := SIZEOF(LREAL));G¶        MEMCPY(destAddr := ADR(lrealActual), srcAddr := Actual.pValue, n := SIZEOF(LREAL));Hق        AssertEquals_LREAL(Expected := lrealExpected, Actual := lrealActual, Delta := 0.0, Message := Message);I    (* LTIME *)J     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_LTIME THENK¾        MEMCPY(destAddr := ADR(ltimeExpected), srcAddr := Expected.pValue, n := SIZEOF(LTIME));L¶        MEMCPY(destAddr := ADR(ltimeActual), srcAddr := Actual.pValue, n := SIZEOF(LTIME));Mآ        AssertEquals_LTIME(Expected := ltimeExpected, Actual := ltimeActual, Message := Message);N    (* LWORD *)O     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_LWORD THENP¾        MEMCPY(destAddr := ADR(lwordExpected), srcAddr := Expected.pValue, n := SIZEOF(LWORD));Q¶        MEMCPY(destAddr := ADR(lwordActual), srcAddr := Actual.pValue, n := SIZEOF(LWORD));Rآ        AssertEquals_LWORD(Expected := lwordExpected, Actual := lwordActual, Message := Message);S    (* REAL *)T‍    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_REAL THENU؛        MEMCPY(destAddr := ADR(realExpected), srcAddr := Expected.pValue, n := SIZEOF(REAL));V²        MEMCPY(destAddr := ADR(realActual), srcAddr := Actual.pValue, n := SIZEOF(REAL));Wط        AssertEquals_REAL(Expected := realExpected, Actual := realActual, Delta := 0.0, Message := Message);X    (* SINT *)Y‍    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_SINT THENZ؛        MEMCPY(destAddr := ADR(sintExpected), srcAddr := Expected.pValue, n := SIZEOF(SINT));[²        MEMCPY(destAddr := ADR(sintActual), srcAddr := Actual.pValue, n := SIZEOF(SINT));\¼        AssertEquals_SINT(Expected := sintExpected, Actual := sintActual, Message := Message);]     (* STRING *)^¢    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_STRING THEN_â        MEMCPY(destAddr := ADR(stringExpected), srcAddr := Expected.pValue, n := DINT_TO_UDINT(Expected.diSize));`ض        MEMCPY(destAddr := ADR(stringActual), srcAddr := Actual.pValue, n := DINT_TO_UDINT(Actual.diSize));aب        AssertEquals_STRING(Expected := stringExpected, Actual := stringActual, Message := Message);b    (* TIME *)c‍    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_TIME THENd؛        MEMCPY(destAddr := ADR(timeExpected), srcAddr := Expected.pValue, n := SIZEOF(TIME));e²        MEMCPY(destAddr := ADR(timeActual), srcAddr := Actual.pValue, n := SIZEOF(TIME));f¼        AssertEquals_TIME(Expected := timeExpected, Actual := timeActual, Message := Message);g*    (* TIME_OF_DAY *)h¨    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_TIMEOFDAY THENiز        MEMCPY(destAddr := ADR(timeOfDayExpected), srcAddr := Expected.pValue, n := SIZEOF(TIME_OF_DAY));jت        MEMCPY(destAddr := ADR(timeOfDayActual), srcAddr := Actual.pValue, n := SIZEOF(TIME_OF_DAY));kق        AssertEquals_TIME_OF_DAY(Expected := timeOfDayExpected, Actual := timeOfDayActual, Message := Message);l    (* UDINT *)m     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_UDINT THENn¾        MEMCPY(destAddr := ADR(udintExpected), srcAddr := Expected.pValue, n := SIZEOF(UDINT));o¶        MEMCPY(destAddr := ADR(udintActual), srcAddr := Actual.pValue, n := SIZEOF(UDINT));pآ        AssertEquals_UDINT(Expected := udintExpected, Actual := udintActual, Message := Message);q    (* UINT *)r‍    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_UINT THENs؛        MEMCPY(destAddr := ADR(uintExpected), srcAddr := Expected.pValue, n := SIZEOF(UINT));t²        MEMCPY(destAddr := ADR(uintActual), srcAddr := Actual.pValue, n := SIZEOF(UINT));u¼        AssertEquals_UINT(Expected := uintExpected, Actual := uintActual, Message := Message);v    (* ULINT *)w     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_ULINT THENx¾        MEMCPY(destAddr := ADR(ulintExpected), srcAddr := Expected.pValue, n := SIZEOF(ULINT));y¶        MEMCPY(destAddr := ADR(ulintActual), srcAddr := Actual.pValue, n := SIZEOF(ULINT));zآ        AssertEquals_ULINT(Expected := ulintExpected, Actual := ulintActual, Message := Message);{    (* USINT *)|     IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_USINT THEN}¾        MEMCPY(destAddr := ADR(usintExpected), srcAddr := Expected.pValue, n := SIZEOF(USINT));~¶        MEMCPY(destAddr := ADR(usintActual), srcAddr := Actual.pValue, n := SIZEOF(USINT));آ        AssertEquals_USINT(Expected := usintExpected, Actual := usintActual, Message := Message);€    (* WORD *)پ‍    IF UDINT_TO_INT(Expected.TypeClass) = IBaseLibrary.TypeClass.TYPE_WORD THEN‚؛        MEMCPY(destAddr := ADR(wordExpected), srcAddr := Expected.pValue, n := SIZEOF(WORD));ƒ²        MEMCPY(destAddr := ADR(wordActual), srcAddr := Actual.pValue, n := SIZEOF(WORD));„¼        AssertEquals_WORD(Expected := wordExpected, Actual := wordActual, Message := Message);…è(* If we've come to this row, it means that the data input is not any of the standard primitive data types, and thus†H   we need to do special handling *)‡¾TestInstancePath := AddTestNameToInstancePath(TestInstancePath := FINDTestSuiteInstancePath());ˆPIF AnyComparator.DataTypesNotEquals THEN‰â    ExpectedDataString := CONCAT(STR1 := '(Type class = ', STR2 := F_AnyTypeClassToString((Expected.TypeClass)));ٹ”    ExpectedDataString := CONCAT(STR1 := ExpectedDataString, STR2 := ')');‹ض    ActualDataString := CONCAT(STR1 := '(Type class = ', STR2 := F_AnyTypeClassToString(Actual.TypeClass));ŒŒ    ActualDataString := CONCAT(STR1 := ActualDataString, STR2 := ')');چTELSIF AnyComparator.DataSizeNotEquals THENژؤ    ExpectedDataString := CONCAT(STR1 := 'Data size = ', STR2 := DINT_TO_STRING(Expected.diSize));ڈ¼    ActualDataString := CONCAT(STR1 := 'Data size = ', STR2 := DINT_TO_STRING(Actual.diSize));گZELSIF AnyComparator.DataContentNotEquals THEN‘ü    FOR Count := 0 TO MIN(Expected.diSize-1, 38) BY 1 DO // One byte will equal two characters (example: 255 = 0xff, 1 = 0x01)’€        ExpectedDataString := CONCAT(STR1 := ExpectedDataString,“ج                                                  STR2 := BYTE_TO_HEXSTR(in := Expected.pValue[Count],”خ                                                                                       iPrecision := 2,•ش                                                                                       bLoCase := FALSE));–    END_FOR—–    ExpectedDataString := CONCAT(STR1 := '0x', STR2 := ExpectedDataString);کّ    FOR Count := 0 TO MIN(Actual.diSize-1, 38) BY 1 DO // One byte will equal two characters (example: 255 = 0xff, 1 = 0x01)™x        ActualDataString := CONCAT(STR1 := ActualDataString,ڑؤ                                                STR2 := BYTE_TO_HEXSTR(in := Actual.pValue[Count],›ت                                                                                     iPrecision := 2,œذ                                                                                     bLoCase := FALSE));‌ژ    ActualDataString := CONCAT(STR1 := '0x', STR2 := ActualDataString);‍وIF (AnyComparator.DataTypesNotEquals OR AnyComparator.DataSizeNotEquals OR AnyComparator.DataContentNotEquals) THENںh    AssertResults.ReportResult(Expected := Expected, `                               Actual := Actual,،d                               Message := Message,¢ˆ                               TestInstancePath := TestInstancePath,£†                               AlreadyReported => AlreadyReported);¤–IF NOT AlreadyReported AND (AnyComparator.DataTypesNotEquals OR AnyComparator.DataSizeNotEquals OR AnyComparator.DataContentNotEquals) THEN¥x    SetTestFailed(AssertionType := E_AssertionType.Type_ANY,¦^                  AssertionMessage := Message);§–    AssertMessageFormatter.LogAssertFailure(Expected := ExpectedDataString,¨ژ                                            Actual := ActualDataString,©~                                            Message := Message,ھ¤                                            TestInstancePath := TestInstancePath);«Interface¬L{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}­ج// | Asserts that two objects (of any type) are equal. If they are not, an assertion error is created.®ز// | For REAL and LREAL it s recommended to use the AssertEquals_REAL or AssertEquals_LREAL respectively ¯¸// | as these give the possibility to specify a delta between the expected and actual value.°//±// Parameters:²D//     | Expected   Expected value³<//     | Actual   Actual value´„//     | Message   The identifying message for the assertion errorµ(// Positive example:¶4// .. code-block:: codesys·//     VAR¸0//         a : INT := 5;¹0//         b : INT := 5;؛//     END_VAR»>//     TEST('Test_ANY_Equals');¼D//     AssertEquals(Expected := a,½@//                  Actual := b,¾`//                  Message := 'Values differ');؟.//     TEST_FINISHED();ہ&// Failing example:ء2//         b : UINT := 5;آP//     TEST('Test_ANY_Differ_DataType');أ4METHOD PUBLIC AssertEqualsؤVAR_INPUTإJ    Expected : ANY; // Expected valueئp    Actual : ANY; // The value to check against expectedاڑ    Message : T_MaxString; // The identifying message for the assertion errorبEND_VARةVARت"    Count : DINT;ثH    ExpectedDataString : STRING(80);جD    ActualDataString : STRING(80);حF    TestInstancePath : T_MaxString;خ6    AlreadyReported : BOOL;دJ    AnyComparator : FB_AnyComparator;ذ0    boolExpected : BOOL;ر,    boolActual : BOOL;ز0    byteExpected : BYTE;س,    byteActual : BYTE;ش0    dateExpected : DATE;ص,    dateActual : DATE;ضP    dateAndTimeExpected : DATE_AND_TIME;×L    dateAndTimeActual : DATE_AND_TIME;ط0    dintExpected : DINT;ظ,    dintActual : DINT;ع4    dwordExpected : DWORD;غ0    dwordActual : DWORD;ـ,    intExpected : INT;ف(    intActual : INT;ق0    lintExpected : LINT;ك,    lintActual : LINT;à4    lrealExpected : LREAL;ل0    lrealActual : LREAL;â4    ltimeExpected : LTIME;م0    ltimeActual : LTIME;ن4    lwordExpected : LWORD;ه0    lwordActual : LWORD;و0    realExpected : REAL;ç,    realActual : REAL;è0    sintExpected : SINT;é,    sintActual : SINT;êB    stringExpected : T_MaxString;ë>    stringActual : T_MaxString;ى0    timeExpected : TIME;ي,    timeActual : TIME;îH    timeOfDayExpected : TIME_OF_DAY;ïD    timeOfDayActual : TIME_OF_DAY;ً4    udintExpected : UDINT;ٌ0    udintActual : UDINT;ٍ0    uintExpected : UINT;َ,    uintActual : UINT;ô4    ulintExpected : ULINT;ُ0    ulintActual : ULINT;ِ4    usintExpected : USINT;÷0    usintActual : USINT;ّ0    wordExpected : WORD;ù,    wordActual : WORD;ذذذEëذذ	
­عذ-
ذذ	
­عذ-ذذ	
­عذ-ذذ	
­عذ-ذذ	
­عذ-ذذ	
­(عذ-ذذ	
­	عذ-ذذ	
­
عذ-ذذ	
­عذ-ذذ	
­عذ-ذذ	
­
عذ-ذذ	
­عذ-ذذ	
­عذ-ذذ	
­عذ-ذذ	
­عذ-ذذ	
­عذ-ذذ	
­عذ-ذذ	
­)عذ-ذذ	
­*عذ-ذذ	
­عذ-ذذ	
­عذ-ذذ	
­عذ-ذذ	
­عذ- ذذ	
­عذ-ذذ	
­عذ-!ذذ	
­عذ-"ذذ	
­عذ-#ذذ	
­عذ-$ذذ	
­عذ-%ذذ	
­عذ-ذذ	
­ عذ- ذذ	
­!عذ-ذذ	
­"عذ-&ذذ	
­#عذ-'ذذ	
­$عذ-(ذذ	
­%عذ-)ذذ	
­&عذ-*ذذ	
­'عذ-ذذ	
­(عذ- ذذ	
­)عذ-ذذ	
­*عذ-+ذذ	
­+عذ-,ذذ	
­,عذ--ذذ	
­-عذ-.ذذ	
­.عذ-/ذذ	
­/عذ-ذذ	
­0عذ- ذذ	
­1عذ-ذذ	
­2عذ-0ذذ	
­3عذ-1ذذ	
­4عذ-2ذذ	
­5عذ-3ذذ	
­6عذ-4ذذ	
­7عذ-ذذ	
­8عذ- ذذ	
­9عذ-ذذ	
­:عذ-5ذذ	
­;عذ-6ذذ	
­<عذ-7ذذ	
­=عذ-8ذذ	
­>عذ-9ذذ	
­?عذ-ذذ	
­@عذ- ذذ	
­Aعذ-ذذ	
­Bعذ-:ذذ	
­Cعذ-;ذذ	
­Dعذ-<ذذ	
­Eعذ-=ذذ	
­Fعذ->ذذ	
­Gعذ-ذذ	
­Hعذ- ذذ	
­Iعذ-ذذ	
­Jعذ-?ذذ	
­Kعذ-@ذذ	
­Lعذ-Aذذ	
­Mعذ-Bذذ	
­Nعذ-Cذذ	
­Oعذ-ذذ	
­Pعذ- ذذ	
­Qعذ-ذذ	
­Rعذ-Dذذ	
­Sعذ-Eذذ	
­Tعذ-Fذذ	
­Uعذ-Gذذ	
­Vعذ-Hذذ	
­Wعذ-ذذ	
­Xعذ- ذذ	
­Yعذ-ذذ	
­Zعذ-Iذذ	
­[عذ-Jذذ	
­\عذ-Kذذ	
­]عذ-Lذذ	
­^عذ-Mذذ	
­_عذ-ذذ	
­`عذ- ذذ	
­aعذ-ذذ	
­bعذ-Nذذ	
­cعذ-Oذذ	
­dعذ-Pذذ	
­eعذ-Qذذ	
­fعذ-Rذذ	
­gعذ-ذذ	
­hعذ- ذذ	
­iعذ-ذذ	
­jعذ-Sذذ	
­kعذ-Tذذ	
­lعذ-Uذذ	
­mعذ-Vذذ	
­nعذ-Wذذ	
­oعذ-ذذ	
­pعذ- ذذ	
­qعذ-ذذ	
­rعذ-Xذذ	
­sعذ-Yذذ	
­tعذ-Zذذ	
­uعذ-[ذذ	
­vعذ-\ذذ	
­wعذ-ذذ	
­xعذ- ذذ	
­yعذ-ذذ	
­zعذ-]ذذ	
­{عذ-^ذذ	
­|عذ-_ذذ	
­}عذ-`ذذ	
­~عذ-aذذ	
­عذ-ذذ	
­€عذ- ذذ	
­پعذ-ذذ	
­‚عذ-bذذ	
­ƒعذ-cذذ	
­„عذ-dذذ	
­…عذ-eذذ	
­†عذ-fذذ	
­‡عذ-ذذ	
­ˆعذ- ذذ	
­‰عذ-ذذ	
­ٹعذ-gذذ	
­‹عذ-hذذ	
­Œعذ-iذذ	
­چعذ-jذذ	
­ژعذ-kذذ	
­ڈعذ-ذذ	
­گعذ- ذذ	
­‘عذ-ذذ	
­’عذ-lذذ	
­“عذ-mذذ	
­”عذ-nذذ	
­•عذ-oذذ	
­–عذ-pذذ	
­—عذ-ذذ	
­کعذ- ذذ	
­™عذ-ذذ	
­ڑعذ-qذذ	
­›عذ-rذذ	
­œعذ-sذذ	
­‌عذ-tذذ	
­‍عذ-uذذ	
­ںعذ-ذذ	
­ عذ- ذذ	
­،عذ-ذذ	
­¢عذ-vذذ	
­£عذ-wذذ	
­¤عذ-xذذ	
­¥عذ-yذذ	
­¦عذ-zذذ	
­§عذ-ذذ	
­¨عذ- ذذ	
­©عذ-ذذ	
­ھعذ-{ذذ	
­«عذ-|ذذ	
­¬عذ-}ذذ	
­­عذ-~ذذ	
­®عذ-ذذ	
­¯عذ-ذذ	
­°عذ- ذذ	
­±عذ-ذذ	
­²عذ-€ذذ	
­³عذ-پذذ	
­´عذ-‚ذذ	
­µعذ-ƒذذ	
­¶عذ-„ذذ	
­·عذ-ذذ	
­¸عذ- ذذ	
­¹عذ-ذذ	
­؛عذ-ذذ	
­»عذ-ذذ	
­¼عذ-…ذذ	
­½عذ-†ذذ	
­¾عذ-‡ذذ	
­؟عذ-ذذ	
­ہعذ-ˆذذ	
­ءعذ-‰ذذ	
­آعذ-ٹذذ	
­أعذ-‹ذذ	
­ؤعذ-Œذذ	
­إعذ-چذذ	
­ئعذ-ژذذ	
­اعذ-ٹذذ	
­بعذ-ڈذذ	
­ةعذ-Œذذ	
­تعذ-گذذ	
­ثعذ-‘ذذ	
­جعذ-’ذذ	
­حعذ-“ذذ	
­خعذ-”ذذ	
­دعذ-•ذذ	
­ذعذ-–ذذ	
­رعذ-—ذذ	
­زعذ-ذذ	
­سعذ-کذذ	
­شعذ-™ذذ	
­صعذ-ڑذذ	
­ضعذ-›ذذ	
­×عذ-œذذ	
­طعذ-–ذذ	
­ظعذ-‌ذذ	
­ععذ-ذذ	
­غعذ-ذذ	
­ـعذ-‍ذذ	
­فعذ-ںذذ	
­قعذ- ذذ	
­كعذ-،ذذ	
­àعذ-¢ذذ	
­لعذ-£ذذ	
­âعذ-ذذ	
­معذ-ذذ	
­نعذ-¤ذذ	
­cعذ-¥ذذ	
­هعذ-¦ذذ	
­وعذ-ذذ	
­çعذ-§ذذ	
­èعذ-¨ذذ	
­éعذ-©ذذ	
­êعذ-ھذذ	
­عذ-ذ«¬ذE`ذذ	
­=عذ-­ذذ	
­>عذ-®ذذ	
­?عذ-¯ذذ	
­@عذ-°ذذ	
­Aعذ-±ذذ	
­Bعذ-²ذذ	
­Cعذ-³ذذ	
­Dعذ-´ذذ	
­Eعذ-°ذذ	
­Fعذ-µذذ	
­Gعذ-°ذذ	
­Hعذ-¶ذذ	
­Iعذ-°ذذ	
­Jعذ-·ذذ	
­Kعذ-¸ذذ	
­Lعذ-¹ذذ	
­Mعذ-؛ذذ	
­Nعذ-°ذذ	
­Oعذ-»ذذ	
­Pعذ-¼ذذ	
­Qعذ-½ذذ	
­Rعذ-¾ذذ	
­Sعذ-؟ذذ	
­Tعذ-°ذذ	
­Uعذ-ہذذ	
­Vعذ-°ذذ	
­Wعذ-¶ذذ	
­Xعذ-°ذذ	
­Yعذ-·ذذ	
­Zعذ-¸ذذ	
­[عذ-ءذذ	
­\عذ-؛ذذ	
­]عذ-°ذذ	
­^عذ-آذذ	
­_عذ-¼ذذ	
­`عذ-½ذذ	
­aعذ-¾ذذ	
­<عذ-؟ذذ	
­bعذ-ذذ	
­ًعذ-أذذ	
­ٌعذ-ؤذذ	
­ٍعذ-إذذ	
­َعذ-ئذذ	
­ôعذ-اذذ	
­ُعذ-بذذ	
­ِعذ-ةذذ	
­÷عذ-تذذ	
­ّعذ-ثذذ	
­ùعذ-جذذ	
­ْعذ-حذذ	
­ûعذ-خذذ	
­üعذ-دذذ	
­‎عذ-ذذ	
­‏عذ-ذذذ	
­ےعذ-رذذ	
­عذ-زذذ	
­عذ-سذذ	
­عذ-شذذ	
­عذ-صذذ	
­عذ-ضذذ	
­عذ-×ذذ	
­عذ-طذذ	
­عذ-ظذذ	
­عذ-عذذ	
­	عذ-غذذ	
­
عذ-ـذذ	
­عذ-فذذ	
­عذ-قذذ	
­
عذ-كذذ	
­عذ-àذذ	
­عذ-لذذ	
­عذ-âذذ	
­عذ-مذذ	
­عذ-نذذ	
­عذ-هذذ	
­عذ-وذذ	
­عذ-çذذ	
­عذ-èذذ	
­عذ-éذذ	
­عذ-êذذ	
­عذ-ëذذ	
­عذ-ىذذ	
­عذ-يذذ	
­عذ-îذذ	
­عذ-ïذذ	
­عذ-ًذذ	
­عذ-ٌذذ	
­ عذ-ٍذذ	
­!عذ-َذذ	
­"عذ-ôذذ	
­#عذ-ُذذ	
­$عذ-ِذذ	
­%عذ-÷ذذ	
­&عذ-ّذذ	
­'عذ-ùذذ	
­عذ-ب