Search Project: *:* -title:discussion

 
1 2 3 .. 110 > >> (Page 1 of 110)

Home (WikiPage)
This is the personal project of costas. This project is created automatically during user registration as an easy place to store personal data that doesn't need its own project such as cloned repositories.
Last updated: 3 hours ago

(no subject) (Thread)
Last updated: 3 hours ago

Ticket #723: Test-Spitz 8:26:36 21-5-2019 (Ticket)
[u'Test-Spitz 8:26:36 21-5-2019', u'internal-test', 0, u'questions', 'Ticket', u'qna', u'Test-Spitz 8:26:36 21-5-2019', datetime.datetime(2019, 5, 21, 8, 26, 36, 690000), '5a53a17b41d9d3000d9f38ac', '', 'forgetracker/model/ticket/Ticket#5c6496ac8ed162001b1df433', False, 0, u'erichspitzweg', u'Ticket #723: Test-Spitz 8:26:36 21-5-2019', 0, False, u'/forge/internal-test/questions/723/', None, datetime.datetime(2019, 2, 13, 22, 14, 4, 736000), None, 723, '', '', u'internal-test', '', True, False, 1]
Last updated: 7 hours ago

Ticket #724: Q2 8:26:17 21-5-2019 (Ticket)
Test[u'Q2 8:26:17 21-5-2019', u'internal-test', 0, u'questions', 'Ticket', u'qna', u'Q2 8:26:17 21-5-2019', datetime.datetime(2019, 5, 21, 8, 26, 17, 578000), '5a53a17b41d9d3000d9f38ac', '', 'forgetracker/model/ticket/Ticket#5c8664fffad370000ff3b37b', False, 0, u'ingo', u'Ticket #724: Q2 8:26:17 21-5-2019', 0, False, u'/forge/internal-test/questions/724/', None, datetime.datetime(2019, 3, 11, 13, 39, 11, 911000), None, 724, '', '', u'internal-test', u'Test', True, False, 1]
Last updated: 7 hours ago

Home (WikiPage)
Project Members: Ingoaliazzz (admin)zer0g Codesys Forge Unit Testing Framework Getting started Documentation Downloads Library Library Verifier Output to logger SimpleCfUnitExample TimedTestExample x64 datatype and adress-space support Acknowledgements Development Log Further Reading Codesys Forge Unit Testing Framework Codesys Forge Unit Testing Framework, in short 'CfUnit' is a free and open-source unit testing framework for Codesys released under MIT-License. It is a Codesys based port forked from TcUnit v0.4.1.0 . Originally written for TwinCAT3 by Jakob Sagatowski Getting started All you need to do is to download & install the library, and provide a reference to the CfUnit-library in your project. Now you are ready and you can start to write your test code. Documentation CfUnit is self-documenting. All API references and usage examples are included in the library itself. The online CfUnit API reference is here. Lastly, the original documentation of TcUnit can be found here. Downloads Here you can find the latest downloads Library Download CfUnit (Currently v0.0.2.1) Download CfUnit.library Library Verifier Download CfUnitVerifier.project Download CfUnitVerifier.project Output to logger In order to verify the output of the unittesting library, the log can be viewed here; Select CfUnit as Logger via the pulldown menu and press refresh; Download CfUnitVerifierOutput.xml When the verifier project is RUN it should yield the following result (see xml output for more info) ====================================== Failed Tests: 80 Successful tests: 82 Tests: 162 Test Suites : 12 ==========TESTS FINISHED RUNNING========== SimpleCfUnitExample Follow this tuturial and/or download the source code. Download SimpleCfUnitExample The tutorial should yield the following result ====================================== Failed tests : 0 Successful tests: 2 Tests: 2 Test suites: 1 ==========TESTS FINISHED RUNNING========== TimedTestExample Mostly, each test runs for one scan only. This example shows you how to run tests on FB's which include internal timers and thus have them tested correctly. ====================================== Failed tests : 0 Successful tests: 1 Tests: 1 Test suites: 1 ==========TESTS FINISHED RUNNING========== Download TimedTest.project x64 datatype and adress-space support CODESYS supports systems with address registers of 32-bit and 64-bit widths. For making the IEC code as independent from the target system as possible, you use the pseudo data types UXINT and XWORD. The compiler checks which target system types are current and then converts these data types into the appropriate standard data types. __UXINT is converted into ULINT on 64-bit platforms and UDINT on 32-bit platforms. __XWORD is converted into LWORD on 64-bit platforms and DWORD on 32-bit platforms. Acknowledgements This project was achieved in a very short time with big help from zer0g & Ingo. Without them this project would have taken me several months. Kudos for helping out with various tickets and providing valueable feedback! Also Kudos to Jakob Sagatowski for giving permission to port his wonderful Unit testing framework to Codesys. Development Log Date Task 18-5-2019 project v0.0.2.1 => tickets 18 & 19 resolved by aliazzz 16-5-2019 project v0.0.2.0 => ticket 14 documentation, resolved by aliazzz 15-5-2019 ticket 16 cleaning-up of the current source code, resolved by aliazzz 14-5-2019 created second milestone development tickets 13-5-2019 project v0.0.1.0 => First working Beta Release. First milestone achieved. 13-5-2019 project v0.0.0.9 => Phased out obsolete TwinCAT datastructures 13-5-2019 project v0.0.0.8 => tickets 2 & 3 resolved by aliazzz 13-5-2019 project v0.0.0.7 => tickets 1 & 5 resolved by zer0g, aliazzz, ingo 12-5-2019 project v0.0.0.6 => implemented replacement for ADSLogStr called LogStr which implements CmpLog 9-5-2019 project v0.0.0.5 9-5-2019 Added CmpApp library for use with tickets 1,2 9-5-2019 Added CmpIecTask library for use with tickets 1,2 9-5-2019 Added CmpErrors2Interfaces library for ERRORS 9-5-2019 Added SysType2Interfaces library for XWORD type 9-5-2019 Refactoring brand dependencies i.e. ADS/TwinCAT/Beckhoff, 9-5-2019 Added CmpLog library, TODO => todo implement replacement for ADLogStr 9-5-2019 Test Project for CmpLog as replacement for ADLogStr ready, basis provided by Zer0g 7-5-2019 project v0.0.0.4: First vanilla codesys compiling version achieved. However, this version will not run because of various still unimplemented tickets. 7-5-2019 Removed TC2_System to expose missing software components. 7-5-2019 Added CAA Types Extern Library 3.5.13.0, provides support for x64 datatypes among PVOID. See x64 datatype and adress-space support. 7-5-2019 Added IECStringUtils Library 3.5.8.0 for tickets 7, 8 ,9 7-5-2019 project v0.0.0.3: tickets 7, 8, 9 resolved by zer0g. 6-5-2019 project v0.0.0.2: ticket 6 resolved by zer0g. 5-5-2019 Renamed project to CfUnit. 4-5-2019 tickets 10, 11 and 12 resolved. 4-5-2019 Writing manufacturer independent solutions for (tickets) 4-5-2019 Identifying issues and create tickets 3-5-2019 Created project v0.0.0.1 Further Reading on Unit testing do's and don'ts; https://petroware.no/unittesting.html on Codesys pragma's (this library relies heavy on them) https://help.codesys.com/api-content/2/codesys/3.5.12.0/en/_cds_f_pragmas_attribute/
Last updated: 18 hours ago

CfUnit SVN repository (SVN Repository)
Last updated: 19 hours ago

CfUnit API Reference (WikiPage)
This is the application programming interface for CfUnit. FB_Assert This function block is responsible for providing all the assert-methods for asserting different data types. Only failed assertions are recorded. Method summary Method details AssertArrayEquals_BOOL AssertArrayEquals_BYTE AssertArrayEquals_DINT AssertArrayEquals_DWORD AssertArrayEquals_INT AssertArrayEquals_LINT AssertArrayEquals_LWORD AssertArrayEquals_SINT AssertArrayEquals_UDINT AssertArrayEquals_UINT AssertArrayEquals_ULINT AssertArrayEquals_USINT AssertArrayEquals_WORD AssertEquals AssertEquals_BOOL AssertEquals_BYTE AssertEquals_DATE AssertEquals_DATE_AND_TIME AssertEquals_DINT AssertEquals_DWORD AssertEquals_INT AssertEquals_LINT AssertEquals_LREAL AssertEquals_LTIME AssertEquals_REAL AssertEquals_SINT AssertEquals_STRING AssertEquals_TIME AssertEquals_TIME_OF_DAY AssertEquals_UDINT AssertEquals_UINT AssertEquals_ULINT AssertEquals_USINT AssertEquals_WORD AssertFalse AssertTrue Method summary AssertArrayEquals_BOOL(Expecteds : ARRAY[*] OF BOOL, Actuals : ARRAY[*] OF BOOL, Message : T_MaxString) ---- Asserts that two BOOL arrays are equal. AssertArrayEquals_BYTE(Expecteds : ARRAY[*] OF BYTE, Actuals : ARRAY[*] OF BYTE, Message : T_MaxString) ---- Asserts that two BYTE arrays are equal. AssertArrayEquals_DINT(Expecteds : ARRAY[*] OF DINT, Actuals : ARRAY[*] OF DINT, Message : T_MaxString) ---- Asserts that two DINT arrays are equal. AssertArrayEquals_DWORD(Expecteds : ARRAY[*] OF DWORD, Actuals : ARRAY[*] OF DWORD, Message : T_MaxString) ---- Asserts that two DWORD arrays are equal. AssertArrayEquals_INT(Expecteds : ARRAY[*] OF INT, Actuals : ARRAY[*] OF INT, Message : T_MaxString) ---- Asserts that two INT arrays are equal. AssertArrayEquals_LINT(Expecteds : ARRAY[*] OF LINT, Actuals : ARRAY[*] OF LINT, Message : T_MaxString) ---- Asserts that two LINT arrays are equal. AssertArrayEquals_LWORD(Expecteds : ARRAY[*] OF LWORD, Actuals : ARRAY[*] OF LWORD, Message : T_MaxString) ---- Asserts that two LWORD arrays are equal. AssertArrayEquals_SINT(Expecteds : ARRAY[*] OF SINT, Actuals : ARRAY[*] OF SINT, Message : T_MaxString) ---- Asserts that two SINT arrays are equal. AssertArrayEquals_UDINT(Expecteds : ARRAY[*] OF UDINT, Actuals : ARRAY[*] OF UDINT, Message : T_MaxString) ---- Asserts that two UDINT arrays are equal. AssertArrayEquals_UINT(Expecteds : ARRAY[*] OF UINT, Actuals : ARRAY[*] OF UINT, Message : T_MaxString) ---- Asserts that two UINT arrays are equal. AssertArrayEquals_ULINT(Expecteds : ARRAY[*] OF ULINT, Actuals : ARRAY[*] OF ULINT, Message : T_MaxString) ---- Asserts that two ULINT arrays are equal. AssertArrayEquals_USINT(Expecteds : ARRAY[*] OF USINT, Actuals : ARRAY[*] OF USINT, Message : T_MaxString) ---- Asserts that two USINT arrays are equal. AssertArrayEquals_WORD(Expecteds : ARRAY[*] OF WORD, Actuals : ARRAY[*] OF WORD, Message : T_MaxString) ---- Asserts that two WORD arrays are equal. AssertEquals(Expected : ANY, Actual : ANY, Message : T_MaxString) ---- Asserts that two objects (of any type) are equal. AssertEquals_BOOL(Expected : BOOL, Actual : BOOL, Message : T_MaxString) ---- Asserts that two BOOLs are equal. AssertEquals_BYTE(Expected : BYTE, Actual : BYTE, Message : T_MaxString) ---- Asserts that two BYTEs are equal. AssertEquals_DATE(Expected : DATE, Actual : DATE, Message : T_MaxString) ---- Asserts that two DATEs are equal. AssertEquals_DATE_AND_TIME(Expected : DATE_AND_TIME, Actual : DATE_AND_TIME, Message : T_MaxString) ---- Asserts that two DATE_AND_TIMEs are equal. AssertEquals_DINT(Expected : DINT, Actual : DINT, Message : T_MaxString) ---- Asserts that two DINTs are equal. AssertEquals_DWORD(Expected : DWORD, Actual : DWORD, Message : T_MaxString) ---- Asserts that two DWORDs are equal. AssertEquals_INT(Expected : INT, Actual : INT, Message : T_MaxString) ---- Asserts that two INTs are equal. AssertEquals_LINT(Expected : LINT, Actual : LINT, Message : T_MaxString) ---- Asserts that two LINTs are equal. AssertEquals_LREAL(Expected : LREAL, Actual : LREAL, Delta : LREAL, Message : T_MaxString) ---- Asserts that two LREALs are equal to within a positive delta. AssertEquals_LTIME(Expected : LTIME, Actual : LTIME, Message : T_MaxString) ---- Asserts that two LTIMEs are equal. AssertEquals_LWORD(Expected : LWORD, Actual : LWORD, Message : T_MaxString) ---- Asserts that two LWORDs are equal. AssertEquals_REAL(Expected : REAL, Actual : REAL, Delta : REAL, Message : T_MaxString) ---- Asserts that two REALs are equal to within a positive delta. AssertEquals_SINT(Expected : SINT, Actual : SINT, Message : T_MaxString) ---- Asserts that two SINTs are equal. AssertEquals_STRING(Expected : T_MaxString, Actual : T_MaxString, Message : T_MaxString) ---- Asserts that two STRINGs are equal. AssertEquals_TIME(Expected : TIME, Actual : TIME, Message : T_MaxString) ---- Asserts that two TIMEs are equal. AssertEquals_TIME_OF_DAY(Expected : TIME_OF_DAY, Actual : TIME_OF_DAY, Message : T_MaxString) ---- Asserts that two TIME_OF_DAYs are equal. AssertEquals_UDINT(Expected : UDINT, Actual : UDINT, Message : T_MaxString) ---- Asserts that two UDINTs are equal. AssertEquals_UINT(Expected : UINT, Actual : UINT, Message : T_MaxString) ---- Asserts that two UINTs are equal. AssertEquals_ULINT(Expected : ULINT, Actual : ULINT, Message : T_MaxString) ---- Asserts that two ULINTs are equal. AssertEquals_USINT(Expected : USINT, Actual : USINT, Message : T_MaxString) ---- Asserts that two USINTs are equal. AssertEquals_WORD(Expected : WORD, Actual : WORD, Message : T_MaxString) ---- Asserts that two WORDs are equal. AssertFalse(Condition : BOOL, Message : T_MaxString) ---- Asserts that a condition is false. AssertTrue(Condition : BOOL, Message : T_MaxString) ---- Asserts that a condition is true. Method details AssertArrayEquals_BOOL METHOD PUBLIC AssertArrayEquals_BOOL VAR_IN_OUT Expecteds : ARRAY[*] OF BOOL; Actuals : ARRAY[*] OF BOOL; END_VAR VAR_INPUT Message : T_MaxString; END_VAR Asserts that two BOOL arrays are equal. If they are not, an assertion error is created. Parameters: Expecteds – BOOL array with expected values Actuals – BOOL array with actual values Message – The identifying message for the assertion error Positive example: VAR a : ARRAY[1..5] OF BOOL := [TRUE, FALSE, TRUE, FALSE, TRUE]; b : ARRAY[1..5] OF BOOL := [TRUE, FALSE, TRUE, FALSE, TRUE]; END_VAR TEST('Test_BOOL_Array_Equals'); Assert.AssertArrayEquals_BOOL(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #1: VAR a : ARRAY[1..6] OF BOOL := [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE]; b : ARRAY[1..4] OF BOOL := [TRUE, TRUE, TRUE, TRUE]; END_VAR TEST('Test_BYTE_Array_DiffersInSize'); Assert.AssertArrayEquals_BOOL(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #2: VAR a : ARRAY[0..5] OF BOOL := [TRUE, TRUE, FALSE, TRUE, FALSE, TRUE]; b : ARRAY[0..5] OF BOOL := [TRUE, TRUE, TRUE, TRUE, FALSE, FALSE]; END_VAR TEST('Test_BYTE_Array_DiffersInContent'); Assert.AssertArrayEquals_BOOL(Expecteds := a, Actuals := b, Message := 'Arrays differ'); AssertArrayEquals_BYTE METHOD PUBLIC AssertArrayEquals_BYTE VAR_IN_OUT Expecteds : ARRAY[*] OF BYTE; Actuals : ARRAY[*] OF BYTE; END_VAR VAR_INPUT Message : T_MaxString; END_VAR Asserts that two BYTE arrays are equal. If they are not, an assertion error is created. Parameters: Expecteds – BYTE array with expected values Actuals – BYTE array with actual values Message – The identifying message for the assertion error Positive example: VAR a : ARRAY[1..3] OF BYTE := [16#FD, 16#34, 16#9E]; b : ARRAY[1..3] OF BYTE := [16#FD, 16#34, 16#9E]; END_VAR TEST('Test_BYTE_Array_Equals'); Assert.AssertArrayEquals_BYTE(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #1: VAR a : ARRAY[1..2] OF BYTE := [16#AB, 16#CD]; b : ARRAY[1..5] OF BYTE := [16#AB, 16#CD, 16#EF, 16#01, 16#23]; END_VAR TEST('Test_BYTE_Array_DiffersInSize'); Assert.AssertArrayEquals_BYTE(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #2: VAR a : ARRAY[0..3] OF BYTE := [16#AB, 16#AA, 16#BB, 16#89]; b : ARRAY[0..3] OF BYTE := [16#AB, 16#CD, 16#BB, 16#89]; END_VAR TEST('Test_BYTE_Array_DiffersInContent'); Assert.AssertArrayEquals_BYTE(Expecteds := a, Actuals := b, Message := 'Arrays differ'); AssertArrayEquals_DINT METHOD PUBLIC AssertArrayEquals_DINT VAR_IN_OUT Expecteds : ARRAY[*] OF DINT; Actuals : ARRAY[*] OF DINT; END_VAR VAR_INPUT Message : T_MaxString; END_VAR Asserts that two DINT arrays are equal. If they are not, an assertion error is created. Parameters: Expecteds – DINT array with expected values Actuals – DINT array with actual values Message – The identifying message for the assertion error Positive example: VAR a : ARRAY[2..7] OF DINT := [64, 98, 2147483647, -2147483648, 0, -63987538]; b : ARRAY[2..7] OF DINT := [64, 98, 2147483647, -2147483648, 0, -63987538]; END_VAR TEST('Test_DINT_Array_Equals'); Assert.AssertArrayEquals_DINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #1: VAR a : ARRAY[3..4] OF DINT := [-11, 2147483647]; b : ARRAY[4..6] OF DINT := [-11, 2147483647, 0]; END_VAR TEST('Test_DINT_Array_DifferInSize'); Assert.AssertArrayEquals_DINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #2: VAR a : ARRAY[3..5] OF DINT := [-4746, -2147483645, 0]; b : ARRAY[3..5] OF DINT := [-4746, -2147483641, 0]; END_VAR TEST('Test_DINT_Array_DifferInContent'); Assert.AssertArrayEquals_DINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); AssertArrayEquals_DWORD METHOD PUBLIC AssertArrayEquals_DWORD VAR_IN_OUT Expecteds : ARRAY[*] OF DWORD; Actuals : ARRAY[*] OF DWORD; END_VAR VAR_INPUT Message : T_MaxString; END_VAR Asserts that two DWORD arrays are equal. If they are not, an assertion error is created. Parameters: Expecteds – DWORD array with expected values Actuals – DWORD array with actual values Message – The identifying message for the assertion error Positive example: VAR a : ARRAY[2..3] OF DWORD := [16#6789ABCD, 16#EF012345]; b : ARRAY[1..2] OF DWORD := [16#6789ABCD, 16#EF012345]; END_VAR TEST('Test_DWORD_Array_Equals'); Assert.AssertArrayEquals_DWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #1: VAR a : ARRAY[-2..1] OF DWORD := [16#6789ABCD, 16#EF012345, 16#67890ABC, 16#DDDDDDDD]; b : ARRAY[-3..-2] OF DWORD := [16#6789ABCD, 16#EF012345]; END_VAR TEST('Test_DWORD_Array_DifferInSize'); Assert.AssertArrayEquals_DWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #2: VAR a : ARRAY[-2..1] OF DWORD := [16#6789ABCD, 16#EFAA2346, 16#ABABABAB, 16#EEEEEEEE]; b : ARRAY[-2..1] OF DWORD := [16#6789ABCD, 16#EF012345, 16#ABABABAB, 16#EEEEEEEE]; END_VAR TEST('Test_DWORD_Array_DifferInContent'); Assert.AssertArrayEquals_DWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); AssertArrayEquals_INT METHOD PUBLIC AssertArrayEquals_INT VAR_IN_OUT Expecteds : ARRAY[*] OF INT; Actuals : ARRAY[*] OF INT; END_VAR VAR_INPUT Message : T_MaxString; END_VAR Asserts that two INT arrays are equal. If they are not, an assertion error is created. Parameters: Expecteds – INT array with expected values Actuals – INT array with actual values Message – The identifying message for the assertion error Positive example: VAR a : ARRAY[-5..1] OF INT := [64, 98, -32768, 32767, 5478, -378, 42]; b : ARRAY[1..7] OF INT := [64, 98, -32768, 32767, 5478, -378, 42]; END_VAR TEST('Test_INT_Array_Equals'); Assert.AssertArrayEquals_INT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #1: VAR a : ARRAY[-4..3] OF INT := [64, 98, -32768, 32767, 5478, -378, 42, 6234]; b : ARRAY[1..5] OF INT := [64, 98, -32768, 32767, 5478]; END_VAR TEST('Test_INT_Array_DifferInSize'); Assert.AssertArrayEquals_INT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #2: VAR a : ARRAY[-8..-6] OF INT := [42, -23, -32768]; b : ARRAY[1..3] OF INT := [42, 24, -32768]; END_VAR TEST('Test_INT_Array_DifferInContent'); Assert.AssertArrayEquals_INT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); AssertArrayEquals_LINT METHOD PUBLIC AssertArrayEquals_LINT VAR_IN_OUT Expecteds : ARRAY[*] OF LINT; Actuals : ARRAY[*] OF LINT; END_VAR VAR_INPUT Message : T_MaxString; END_VAR Asserts that two LINT arrays are equal. If they are not, an assertion error is created. Parameters: Expecteds – LINT array with expected values Actuals – LINT array with actual values Message – The identifying message for the assertion error Positive example: VAR a : ARRAY[-1..0] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808]; b : ARRAY[4..5] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808]; END_VAR TEST('Test_LINT_Array_Equals'); Assert.AssertArrayEquals_LINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #1: VAR a : ARRAY[-1..1] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808, 55]; b : ARRAY[4..5] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808]; END_VAR TEST('Test_LINT_Array_DifferInSize'); Assert.AssertArrayEquals_LINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #2: VAR a : ARRAY[-1..1] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_853_775_808, 55]; b : ARRAY[4..6] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808, 55]; END_VAR TEST('Test_LINT_Array_DifferInContent'); Assert.AssertArrayEquals_LINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); AssertArrayEquals_LWORD METHOD PUBLIC AssertArrayEquals_LWORD VAR_IN_OUT Expecteds : ARRAY[*] OF LWORD; Actuals : ARRAY[*] OF LWORD; END_VAR VAR_INPUT Message : T_MaxString; END_VAR Asserts that two LWORD arrays are equal. If they are not, an assertion error is created. Parameters: Expecteds – LWORD array with expected values Actuals – LWORD array with actual values Message – The identifying message for the assertion error Positive example: VAR a : ARRAY[1..2] OF LWORD := [16#01234567890ABCDE, 16#EDCBA09876543210]; b : ARRAY[1..2] OF LWORD := [16#01234567890ABCDE, 16#EDCBA09876543210]; END_VAR TEST('Test_LWORD_Array_Equals'); Assert.AssertArrayEquals_LWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #1: VAR a : ARRAY[1..1] OF LWORD := [16#EDCBA09876543210]; b : ARRAY[1..2] OF LWORD := [16#01234567890ABCDE, 16#EDCBA09876543210]; END_VAR TEST('Test_LWORD_Array_DifferInSize'); Assert.AssertArrayEquals_LWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #2: VAR a : ARRAY[1..1] OF LWORD := [16#EDCBA09876543210]; b : ARRAY[1..1] OF LWORD := [16#01234567890ABCDE]; END_VAR TEST('Test_LWORD_Array_DifferInContent'); Assert.AssertArrayEquals_LWORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); AssertArrayEquals_SINT METHOD PUBLIC AssertArrayEquals_SINT VAR_IN_OUT Expecteds : ARRAY[*] OF SINT; Actuals : ARRAY[*] OF SINT; END_VAR VAR_INPUT Message : T_MaxString; END_VAR Asserts that two SINT arrays are equal. If they are not, an assertion error is created. Parameters: Expecteds – SINT array with expected values Actuals – SINT array with actual values Message – The identifying message for the assertion error Positive example: VAR a : ARRAY[0..3] OF SINT := [-128, 127, -34, 62]; b : ARRAY[0..3] OF SINT := [-128, 127, -34, 62]; END_VAR TEST('Test_SINT_Array_Equals'); Assert.AssertArrayEquals_SINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #1: VAR a : ARRAY[0..0] OF SINT := [-128]; b : ARRAY[0..1] OF SINT := [-128, 127]; END_VAR TEST('Test_SINT_Array_DifferInSize'); Assert.AssertArrayEquals_SINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #2: VAR a : ARRAY[0..0] OF SINT := [-128]; b : ARRAY[0..0] OF SINT := [127]; END_VAR TEST('Test_SINT_Array_DifferInContent'); Assert.AssertArrayEquals_SINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); AssertArrayEquals_UDINT METHOD PUBLIC AssertArrayEquals_UDINT VAR_IN_OUT Expecteds : ARRAY[*] OF UDINT; Actuals : ARRAY[*] OF UDINT; END_VAR VAR_INPUT Message : T_MaxString; END_VAR Asserts that two UDINT arrays are equal. If they are not, an assertion error is created. Parameters: Expecteds – UDINT array with expected values Actuals – UDINT array with actual values Message – The identifying message for the assertion error Positive example: VAR a : ARRAY[1..3] OF UDINT := [0, 4294967295, 5000]; b : ARRAY[1..3] OF UDINT := [0, 4294967295, 5000]; END_VAR TEST('Test_UDINT_Array_Equals'); Assert.AssertArrayEquals_UDINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #1: VAR a : ARRAY[-5..-4] OF UDINT := [4294967295, 0]; b : ARRAY[0..2] OF UDINT := [4294967295, 0, 5000]; END_VAR TEST('Test_UDINT_Array_DifferInSize'); Assert.AssertArrayEquals_UDINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #2: VAR a : ARRAY[-5..-4] OF UDINT := [4294967295, 5]; b : ARRAY[0..1] OF UDINT := [4294967295, 4]; END_VAR TEST('Test_UDINT_Array_DifferInContent'); Assert.AssertArrayEquals_UDINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); AssertArrayEquals_UINT METHOD PUBLIC AssertArrayEquals_UINT VAR_IN_OUT Expecteds : ARRAY[*] OF UINT; Actuals : ARRAY[*] OF UINT; END_VAR VAR_INPUT Message : T_MaxString; END_VAR Asserts that two UINT arrays are equal. If they are not, an assertion error is created. Parameters: Expecteds – UINT array with expected values Actuals – UINT array with actual values Message – The identifying message for the assertion error Positive example: VAR a : ARRAY[0..4] OF UINT := [0, 65535, 2000, 34123, 59]; b : ARRAY[0..4] OF UINT := [0, 65535, 2000, 34123, 59]; END_VAR TEST('Test_UINT_Array_Equals'); Assert.AssertArrayEquals_UINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #1: VAR a : ARRAY[0..2] OF UINT := [0, 4, 8]; b : ARRAY[0..3] OF UINT := [0, 4, 8, 12]; END_VAR TEST('Test_UINT_Array_DifferInSize'); Assert.AssertArrayEquals_UINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #2: VAR a : ARRAY[0..3] OF UINT := [0, 4, 8, 99]; b : ARRAY[0..3] OF UINT := [0, 4, 8, 12]; END_VAR TEST('Test_UINT_Array_DifferInContent'); Assert.AssertArrayEquals_UINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); AssertArrayEquals_ULINT METHOD PUBLIC AssertArrayEquals_ULINT VAR_IN_OUT Expecteds : ARRAY[*] OF ULINT; Actuals : ARRAY[*] OF ULINT; END_VAR VAR_INPUT Message : T_MaxString; END_VAR Asserts that two ULINT arrays are equal. If they are not, an assertion error is created. Parameters: Expecteds – ULINT array with expected values Actuals – ULINT array with actual values Message – The identifying message for the assertion error Positive example: VAR a : ARRAY[0..3] OF ULINT := [0, 18_446_744_073_709_551_615, 9_400_000_000_000, 3_213_000_444_000]; b : ARRAY[0..3] OF ULINT := [0, 18_446_744_073_709_551_615, 9_400_000_000_000, 3_213_000_444_000]; END_VAR TEST('Test_ULINT_Array_Equals'); Assert.AssertArrayEquals_ULINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #1: VAR a : ARRAY[0..1] OF ULINT := [0, 9_400_000_000_000]; b : ARRAY[0..0] OF ULINT := [0]; END_VAR TEST('Test_ULINT_Array_DifferInSize'); Assert.AssertArrayEquals_ULINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #2: VAR a : ARRAY[0..1] OF ULINT := [3_213_000_444_000, 9_400_000_000_000]; b : ARRAY[0..1] OF ULINT := [3_213_000_444_000, 18_446_744_073_709_551_615]; END_VAR TEST('Test_ULINT_Array_DifferInContent'); Assert.AssertArrayEquals_ULINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); AssertArrayEquals_USINT METHOD PUBLIC AssertArrayEquals_USINT VAR_IN_OUT Expecteds : ARRAY[*] OF USINT; Actuals : ARRAY[*] OF USINT; END_VAR VAR_INPUT Message : T_MaxString; END_VAR Asserts that two USINT arrays are equal. If they are not, an assertion error is created. Parameters: Expecteds – USINT array with expected values Actuals – USINT array with actual values Message – The identifying message for the assertion error Positive example: VAR a : ARRAY[0..100] OF USINT := [42, 100(33)]; b : ARRAY[0..100] OF USINT := [42, 100(33)]; END_VAR TEST('Test_USINT_Array_Equals'); Assert.AssertArrayEquals_USINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #1: VAR a : ARRAY[0..100] OF USINT := [101(42)]; b : ARRAY[0..70] OF USINT := [71(42)]; END_VAR TEST('Test_USINT_Array_DifferInSize'); Assert.AssertArrayEquals_USINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #2: VAR a : ARRAY[0..10] OF USINT := [0,1,2,3,6(4),5]; b : ARRAY[0..10] OF USINT := [0,1,2,3,6(5),6]; END_VAR TEST('Test_USINT_Array_DifferInContent'); Assert.AssertArrayEquals_USINT(Expecteds := a, Actuals := b, Message := 'Arrays differ'); AssertArrayEquals_WORD METHOD PUBLIC AssertArrayEquals_WORD VAR_IN_OUT Expecteds : ARRAY[*] OF WORD; Actuals : ARRAY[*] OF WORD; END_VAR VAR_INPUT Message : T_MaxString; END_VAR Asserts that two WORD arrays are equal. If they are not, an assertion error is created. Parameters: Expecteds – WORD array with expected values Actuals – WORD array with actual values Message – The identifying message for the assertion error Positive example: VAR a : ARRAY[1..5] OF WORD := [16#AAAA, 16#BBBB, 16#CCCC, 16#DDDD, 16#EEEE]; b : ARRAY[1..5] OF WORD := [16#AAAA, 16#BBBB, 16#CCCC, 16#DDDD, 16#EEEE]; END_VAR TEST('Test_WORD_Array_Equals'); Assert.AssertArrayEquals_WORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #1: VAR a : ARRAY[1..5] OF WORD := [16#0000, 16#3333, 16#5555, 16#7777, 16#BBBB]; b : ARRAY[1..7] OF WORD := [16#0000, 16#3333, 16#5555, 16#7777, 16#BBBB, 16#FFFF, 16#1122]; END_VAR TEST('Test_WORD_Array_DifferInSize'); Assert.AssertArrayEquals_WORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); Failing example #2: VAR a : ARRAY[1..7] OF WORD := [16#2323, 16#876A, 16#4CD4, 16#F3DC, 16#BBBB, 16#FFFF, 16#1133]; b : ARRAY[1..7] OF WORD := [16#2323, 16#876A, 16#4CD4, 16#F3DC, 16#BBBB, 16#FFFF, 16#1122]; END_VAR TEST('Test_WORD_Array_DifferInContent'); Assert.AssertArrayEquals_WORD(Expecteds := a, Actuals := b, Message := 'Arrays differ'); AssertEquals METHOD PUBLIC AssertEquals VAR_INPUT Expected : ANY; Actual : ANY; Message : T_MaxString; END_VAR 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: Expected – Expected value Actual – Actual value Message – The identifying message for the assertion error Positive example: VAR a : INT := 5; b : INT := 5; END_VAR TEST('Test_ANY_Equals'); Assert.AssertEquals(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : INT := 5; b : UINT := 5; END_VAR TEST('Test_ANY_Differ_DataType'); Assert.AssertEquals(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_BOOL METHOD PUBLIC AssertEquals_BOOL VAR_INPUT Expected : BOOL; Actual : BOOL; Message : T_MaxString; END_VAR Asserts that two BOOLs are equal. If they are not, an assertion error is created. Parameters: Expected – BOOL expected value Actual – BOOL actual value Message – The identifying message for the assertion error Positive example: VAR a : BOOL := TRUE; b : BOOL := TRUE; END_VAR TEST('Test_BOOL_Equals'); Assert.AssertEquals_BOOL(Expected := a, Actual := b, Message := 'Bools differ'); Failing example: VAR a : BOOL := TRUE; b : BOOL := FALSE; END_VAR TEST('Test_BOOL_Differ'); Assert.AssertEquals_BOOL(Expected := a, Actual := b, Message := 'Bools differ'); AssertEquals_BYTE METHOD PUBLIC AssertEquals_BYTE VAR_INPUT Expected : BYTE; Actual : BYTE; Message : T_MaxString; END_VAR Asserts that two BYTEs are equal. If they are not, an assertion error is created. Parameters: Expected – BYTE expected value Actual – BYTE actual value Message – The identifying message for the assertion error Positive example: VAR a : BYTE := 16#CD; b : BYTE := 16#CD; END_VAR TEST('Test_BYTE_Equals'); Assert.AssertEquals_BYTE(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : BYTE := 16#AB; b : BYTE := 16#CD; END_VAR TEST('Test_BYTE_Differ'); Assert.AssertEquals_BYTE(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_DATE METHOD PUBLIC AssertEquals_DATE VAR_INPUT Expected : DATE; Actual : DATE; Message : T_MaxString; END_VAR Asserts that two DATEs are equal. If they are not, an assertion error is created. Parameters: Expected – DATE expected value Actual – DATE actual value Message – The identifying message for the assertion error Positive example: VAR a : DATE := DATE#1996-05-06; b : DATE := DATE#1996-05-06; END_VAR TEST('Test_DATE_Equals'); Assert.AssertEquals_DATE(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : DATE := DATE#1996-05-06; b : DATE := DATE#2019-01-20; END_VAR TEST('Test_DATE_Differ'); Assert.AssertEquals_DATE(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_DATE_AND_TIME METHOD PUBLIC AssertEquals_DATE_AND_TIME VAR_INPUT Expected : DATE_AND_TIME; Actual : DATE_AND_TIME; Message : T_MaxString; END_VAR Asserts that two DATE_AND_TIMEs are equal. If they are not, an assertion error is created. Parameters: Expected – DATE_AND_TIME expected value Actual – DATE_AND_TIME actual value Message – The identifying message for the assertion error Positive example: VAR a : DATE_AND_TIME := DATE_AND_TIME#2019-01-20-13:54:30; b : DATE_AND_TIME := DATE_AND_TIME#2019-01-20-13:54:30; END_VAR TEST('Test_DATE_AND_TIME_Equals'); Assert.AssertEquals_DATE_AND_TIME(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : DATE_AND_TIME := DATE_AND_TIME#1996-05-06-15:36:30; b : DATE_AND_TIME := DATE_AND_TIME#1972-03-29-00:00:00; END_VAR TEST('Test_DATE_AND_TIME_Differ'); Assert.AssertEquals_DATE_AND_TIME(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_DINT METHOD PUBLIC AssertEquals_DINT VAR_INPUT Expected : DINT; Actual : DINT; Message : T_MaxString; END_VAR Asserts that two DINTs are equal. If they are not, an assertion error is created. Parameters: Expected – BYTE expected value Actual – BYTE actual value Message – The identifying message for the assertion error Positive example: VAR a : DINT := -80000; b : DINT := -80000; END_VAR TEST('Test_DINT_Equals'); Assert.AssertEquals_DINT(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : DINT := -55555; b : DINT := 70000; END_VAR TEST('Test_DINT_Differ'); Assert.AssertEquals_DINT(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_DWORD METHOD PUBLIC AssertEquals_DWORD VAR_INPUT Expected : DWORD; Actual : DWORD; Message : T_MaxString; END_VAR Asserts that two DWORDs are equal. If they are not, an assertion error is created. Parameters: Expected – DWORD expected value Actual – DWORD actual value Message – The identifying message for the assertion error Positive example: VAR a : DWORD := 16#7890ABCD; b : DWORD := 16#7890ABCD; END_VAR TEST('Test_DWORD_Equals'); Assert.AssertEquals_DWORD(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : DWORD := 16#12345678; b : DWORD := 16#90ABCDEF; END_VAR TEST('Test_DWORD_Differ'); Assert.AssertEquals_DWORD(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_INT METHOD PUBLIC AssertEquals_INT VAR_INPUT Expected : INT; Actual : INT; Message : T_MaxString; END_VAR Asserts that two INTs are equal. If they are not, an assertion error is created. Parameters: Expected – INT expected value Actual – INT actual value Message – The identifying message for the assertion error Positive example: VAR a : INT := -12345; b : INT := -12345; END_VAR TEST('Test_INT_Equals'); Assert.AssertEquals_INT(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : INT := -32000; b : INT := 15423; END_VAR TEST('Test_INT_Differ'); Assert.AssertEquals_INT(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_LINT METHOD PUBLIC AssertEquals_LINT VAR_INPUT Expected : LINT; Actual : LINT; Message : T_MaxString; END_VAR Asserts that two LINTs are equal. If they are not, an assertion error is created. Parameters: Expected – LINT expected value Actual – LINT actual value Message – The identifying message for the assertion error Positive example: VAR a : LINT := -123456789; b : LINT := -123456789; END_VAR TEST('Test_LINT_Equals'); Assert.AssertEquals_LINT(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : LINT := -451416345; b : LINT := 589532453; END_VAR TEST('Test_LINT_Differ'); Assert.AssertEquals_LINT(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_LREAL METHOD PUBLIC AssertEquals_LREAL VAR_INPUT Expected : LREAL; Actual : LREAL; Delta : LREAL; Message : T_MaxString; END_VAR Asserts that two LREALs are equal to within a positive delta. If they are not, an assertion error is created. Parameters: Expected – LREAL expected value Actual – LREAL actual value Delta – The maximum delta between the absolute value of expected and actual for which both numbers are still considered equal Message – The identifying message for the assertion error Positive example: VAR a : LREAL := 1234567.89; b : LREAL := 1234567.76; END_VAR TEST('Test_LREAL_Equals'); Assert.AssertEquals_LREAL(Expected := a, Actual := b, Delta := 0.2, Message := 'Values differ'); Failing example: VAR a : LREAL := 1234567.89; b : LREAL := 1234567.76; END_VAR TEST('Test_LREAL_Differ'); Assert.AssertEquals_LREAL(Expected := a, Actual := b, Delta := 0.1, Message := 'Values differ'); AssertEquals_LTIME METHOD PUBLIC AssertEquals_LTIME VAR_INPUT Expected : LTIME; Actual : LTIME; Message : T_MaxString; END_VAR Asserts that two LTIMEs are equal. If they are not, an assertion error is created. Parameters: Expected – LTIME expected value Actual – LTIME actual value Message – The identifying message for the assertion error Positive example: VAR a : LTIME := LTIME#213503D23H34M33S709MS551US615NS; b : LTIME := LTIME#213503D23H34M33S709MS551US615NS; END_VAR TEST('Test_LTIME_Equals'); Assert.AssertEquals_LTIME(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : LTIME := LTIME#213503D23H34M33S709MS551US615NS; b : LTIME := LTIME#1000D15H23M12S34MS2US44NS; END_VAR TEST('Test_LTIME_Differ'); Assert.AssertEquals_LTIME(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_LWORD METHOD PUBLIC AssertEquals_LWORD VAR_INPUT Expected : LWORD; Actual : LWORD; Message : T_MaxString; END_VAR Asserts that two LWORDs are equal. If they are not, an assertion error is created. Parameters: Expected – LWORD expected value Actual – LWORD actual value Message – The identifying message for the assertion error Positive example: VAR a : LWORD := 16#0123456789ABCDEF; b : LWORD := 16#0123456789ABCDEF; END_VAR TEST('Test_LWORD_Equals'); Assert.AssertEquals_LWORD(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : LWORD := 16#0123656789ABCBEC; b : LWORD := 16#0123256789ABCAEE; END_VAR TEST('Test_LWORD_Differ'); Assert.AssertEquals_LWORD(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_REAL METHOD PUBLIC AssertEquals_REAL VAR_INPUT Expected : REAL; Actual : REAL; Delta : REAL; Message : T_MaxString; END_VAR Asserts that two REALs are equal to within a positive delta. If they are not, an assertion error is created. Parameters: Expected – REAL expected value Actual – REAL actual value Delta – The maximum delta between the absolute value of expected and actual for which both numbers are still considered equal Message – The identifying message for the assertion error Positive example: VAR a : REAL := 1234.5; b : REAL := 1234.4; END_VAR TEST('Test_REAL_Equals'); Assert.AssertEquals_REAL(Expected := a, Actual := b, Delta := 0.1, Message := 'Values differ'); Failing example: VAR a : REAL := 1234.5; b : REAL := 1234.4; END_VAR TEST('Test_REAL_Differ'); Assert.AssertEquals_REAL(Expected := a, Actual := b, Delta := 0.05, Message := 'Values differ'); AssertEquals_SINT METHOD PUBLIC AssertEquals_SINT VAR_INPUT Expected : SINT; Actual : SINT; Message : T_MaxString; END_VAR Asserts that two SINTs are equal. If they are not, an assertion error is created. Parameters: Expected – SINT expected value Actual – SINT actual value Message – The identifying message for the assertion error Positive example: VAR a : SINT := -128; b : SINT := -128; END_VAR TEST('Test_SINT_Equals'); Assert.AssertEquals_SINT(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : SINT := 127; b : SINT := -30; END_VAR TEST('Test_SINT_Differ'); Assert.AssertEquals_SINT(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_STRING METHOD PUBLIC AssertEquals_STRING VAR_INPUT Expected : T_MaxString; Actual : T_MaxString; Message : T_MaxString; END_VAR Asserts that two STRINGs are equal. If they are not, an assertion error is created. Parameters: Expected – STRING expected value Actual – STRING actual value Message – The identifying message for the assertion error Positive example: VAR a : STRING := 'Hello there'; b : STRING := 'Hello there'; END_VAR TEST('Test_STRING_Equals'); Assert.AssertEquals_STRING(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : STRING := 'This is a string'; b : STRING := 'This is another string'; END_VAR TEST('Test_STRING_Differ'); Assert.AssertEquals_STRING(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_TIME METHOD PUBLIC AssertEquals_TIME VAR_INPUT Expected : TIME; Actual : TIME; Message : T_MaxString; END_VAR Asserts that two TIMEs are equal. If they are not, an assertion error is created. Parameters: Expected – TIME expected value Actual – TIME actual value Message – The identifying message for the assertion error Positive example: VAR a : TIME := T#11H34M13S244MS; b : TIME := T#11H34M13S244MS; END_VAR TEST('Test_TIME_Equals'); Assert.AssertEquals_TIME(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : TIME := T#12H34M15S10MS; b : TIME := T#11H34M13S244MS; END_VAR TEST('Test_TIME_Differ'); Assert.AssertEquals_TIME(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_TIME_OF_DAY METHOD PUBLIC AssertEquals_TIME_OF_DAY VAR_INPUT Expected : TIME_OF_DAY; Actual : TIME_OF_DAY; Message : T_MaxString; END_VAR Asserts that two TIME_OF_DAYs are equal. If they are not, an assertion error is created. Parameters: Expected – TIME_OF_DAY expected value Actual – TIME_OF_DAY actual value Message – The identifying message for the assertion error Positive example: VAR a : TIME_OF_DAY := TIME_OF_DAY#06:21:11.492; b : TIME_OF_DAY := TIME_OF_DAY#06:21:11.492; END_VAR TEST('Test_TIME_OF_DAY_Equals'); Assert.AssertEquals_TIME_OF_DAY(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : TIME_OF_DAY := TIME_OF_DAY#15:36:30.123; b : TIME_OF_DAY := TIME_OF_DAY#06:21:11.492; END_VAR TEST('Test_TIME_OF_DAY_Differ'); Assert.AssertEquals_TIME_OF_DAY(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_UDINT METHOD PUBLIC AssertEquals_UDINT VAR_INPUT Expected : UDINT; Actual : UDINT; Message : T_MaxString; END_VAR Asserts that two UDINTs are equal. If they are not, an assertion error is created. Parameters: Expected – UDINT expected value Actual – UDINT actual value Message – The identifying message for the assertion error Positive example: VAR a : UDINT := 21845123; b : UDINT := 21845123; END_VAR TEST('Test_UDINT_Equals'); Assert.AssertEquals_UDINT(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : UDINT := 34124214; b : UDINT := 52343244; END_VAR TEST('Test_UDINT_Differ'); Assert.AssertEquals_UDINT(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_UINT METHOD PUBLIC AssertEquals_UINT VAR_INPUT Expected : UINT; Actual : UINT; Message : T_MaxString; END_VAR Asserts that two UINTs are equal. If they are not, an assertion error is created. Parameters: Expected – UINT expected value Actual – UINT actual value Message – The identifying message for the assertion error Positive example: VAR a : UINT := 65535; b : UINT := 65535; END_VAR TEST('Test_UINT_Equals'); Assert.AssertEquals_UINT(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : UINT := 64322; b : UINT := 32312; END_VAR TEST('Test_UINT_Differ'); Assert.AssertEquals_UINT(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_ULINT METHOD PUBLIC AssertEquals_ULINT VAR_INPUT Expected : ULINT; Actual : ULINT; Message : T_MaxString; END_VAR Asserts that two ULINTs are equal. If they are not, an assertion error is created. Parameters: Expected – ULINT expected value Actual – ULINT actual value Message – The identifying message for the assertion error Positive example: VAR a : ULINT := 45683838383; b : ULINT := 45683838383; END_VAR TEST('Test_ULINT_Equals'); Assert.AssertEquals_ULINT(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : ULINT := 10000; b : ULINT := 53685437234; END_VAR TEST('Test_ULINT_Differ'); Assert.AssertEquals_ULINT(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_USINT METHOD PUBLIC AssertEquals_USINT VAR_INPUT Expected : USINT; Actual : USINT; Message : T_MaxString; END_VAR Asserts that two USINTs are equal. If they are not, an assertion error is created. Parameters: Expected – USINT expected value Actual – USINT actual value Message – The identifying message for the assertion error Positive example: VAR a : USINT := 5; b : USINT := 5; END_VAR TEST('Test_USINT_Equals'); Assert.AssertEquals_USINT(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : USINT := 3; b : USINT := 7; END_VAR TEST('Test_USINT_Differ'); Assert.AssertEquals_USINT(Expected := a, Actual := b, Message := 'Values differ'); AssertEquals_WORD METHOD PUBLIC AssertEquals_WORD VAR_INPUT Expected : WORD; Actual : WORD; Message : T_MaxString; END_VAR Asserts that two WORDs are equal. If they are not, an assertion error is created. Parameters: Expected – WORD expected value Actual – WORD actual value Message – The identifying message for the assertion error Positive example: VAR a : WORD := 16#ABCD; b : WORD := 16#ABCD; END_VAR TEST('Test_WORD_Equals'); Assert.AssertEquals_WORD(Expected := a, Actual := b, Message := 'Values differ'); Failing example: VAR a : WORD := 16#EF01; b : WORD := 16#2345; END_VAR TEST('Test_WORD_Differ'); Assert.AssertEquals_WORD(Expected := a, Actual := b, Message := 'Values differ'); AssertFalse METHOD PUBLIC AssertFalse VAR_INPUT Condition: BOOL; Message : T_MaxString; END_VAR Asserts that a condition is false. If it is not, an assertion error is created. Parameters: Condition – Condition to be checked Message – The identifying message for the assertion error Positive example: VAR a : INT := -33; b : INT := -44; END_VAR TEST('AssertThatINTsAreNotEqual'); Assert.AssertFalse(Condition := (a = b), Message := 'INTs are equal'); Failing example: VAR a : INT := -33; b : INT := -44; END_VAR TEST('AssertThatINTsAreEqual'); Assert.AssertFalse(Condition := (a <> b), Message := 'INTs are equal'); AssertTrue METHOD PUBLIC AssertTrue VAR_INPUT Condition: BOOL; Message : T_MaxString; END_VAR Asserts that a condition is true. If it is not, an assertion error is created. Parameters: Condition – Condition to be checked Message – The identifying message for the assertion error Positive example: VAR a : WORD := 16#ABCD; b : WORD := 16#0123; END_VAR TEST('AssertThatWORDsAreNotEqual'); Assert.AssertTrue(Condition := (a <> b), Message := 'WORDs are equal'); Failing example: VAR a : WORD := 16#ABCD; b : WORD := 16#0123; END_VAR TEST('AssertThatWORDsAreEqual'); Assert.AssertTrue(Condition := (a = b), Message := 'WORDs are not equal'); Method summary Method details AssertArrayEquals_BOOL AssertArrayEquals_BYTE AssertArrayEquals_DINT AssertArrayEquals_DWORD AssertArrayEquals_INT AssertArrayEquals_LINT AssertArrayEquals_LWORD AssertArrayEquals_SINT AssertArrayEquals_UDINT AssertArrayEquals_UINT AssertArrayEquals_ULINT AssertArrayEquals_USINT AssertArrayEquals_WORD AssertEquals AssertEquals_BOOL AssertEquals_BYTE AssertEquals_DATE AssertEquals_DATE_AND_TIME AssertEquals_DINT AssertEquals_DWORD AssertEquals_INT AssertEquals_LINT AssertEquals_LREAL AssertEquals_LTIME AssertEquals_REAL AssertEquals_SINT AssertEquals_STRING AssertEquals_TIME AssertEquals_TIME_OF_DAY AssertEquals_UDINT AssertEquals_UINT AssertEquals_ULINT AssertEquals_USINT AssertEquals_WORD AssertFalse AssertTrue
Last updated: 19 hours ago

(no subject) (Thread)
Last updated: 19 hours ago

Home (WikiPage)
Project Members: aliazzz (admin) Monarco Hat Realtime Clock SRAM Support Package Download Package I2C MCP7941x Changelog Library usage RETAIN data size restriction of 64 Bytes Performance as performed with the example code Installing the MCP7941 for SRAM/RTC usage in CODESYS MCP7941x hardware setup installing the i2c software tools check the adressing/connections installing the MCP7941 for permanent use under linux On a Monarco HAT UU shows up but you did not install the RTC for use on the linux side.. Enjoy! I2C MCP7941x This chip is the follow-up of the famous DS1307 RTC. It enables you to use RETAIN declared variables in your code on a Raspberry Pi or Beaglebone. This RTC chip is used in the Monarco Hat but it can also be installed separatly as a standalone RTC add-on solution on a break-out board. By adding a battery backed SRAM MCP7941x realtime clock to your Raspberry setup you obtain a hardware realtime clock and SRAM capability The RTC time itself can be accessed via several "of the shelve" libraries, so I did not bother to implement it. However, obtaining current date and time is demonstrated in the provided example code with help of such an "of the shelve" library. Changelog v0.0.2.1 stable initial public release devdescr.xml: vendor id set to 0003, device id set to 0009, see https://forge.codesys.com/drv/io-drivers/database/Home/ for details. <DeviceIdentification> <Type>500</Type> <Id>0003 0009</Id> <Version>0.0.2.1</Version> </DeviceIdentification> Library usage Install the .package file, it provides the library, example and an eula. For a quick start, open the example code from the package installation directory. You can declare any type of variable as RETAIN. If you have several POU's in your program containing RETAIN data, the total accumulated maximum size may not exceed 64 Bytes. Anytime you write the retained data in your program, the SRAM gets updated with the new values. Whenever your runtime stops or reboots, the values are stored in the battery buffered SRAM. If your runtime resumes, the data is restored from SRAM to the userdata auto-magically. VAR RETAIN abyMyRetainedBytes : ARRAY [0..63] OF BYTES; // maximum size of retained data in SRAM of mcp7491x END_VAR RETAIN data size restriction of 64 Bytes If your total RETAIN data exceeds 64 Bytes, anything over this maximum is simply ignored and will not be retained! Beware, no error messages or feedback is given if the data exceeds this size You can verify this behaviour by opening the test program, re-edit the code for array's of e.g. 96 bytes size, fill it and then cold start the controller. When you enable the runtime, only 64 bytes get reloaded from SRAM. VAR RETAIN abyMyRetainedBytes : ARRAY [0..95] OF BYTES; // Exceeds maximum size of retained data in SRAM of mcp7491x, indexes [64..95] are simply ignored as they will not physically fit in the SRAM. END_VAR Performance as performed with the example code Tested on a Raspberry Pi 3B+ with singlecore runtime license and using the example code from the package, this so you can verify these results for yourself if you wish. If you have any meaningful feedback, please let me know. I will add your testresults to this page. Test procedure: 1) Use a single task, configure it as in the table. 1) Go online, flush the SRAM, then verify the array contents, then Cold reset the controller and press run and check the array again. The array should be empty. 2) Write the Test sequence, then Cold reset the controller and press run and check the array again, the array should be filled with correct value's. Tested using Raspberry Pi 3B+ hardware with a Single Core License Tasktime Prio Result T#250ms 1 No issue's T#100ms 1 No issue's T#50ms 1 No issue's T#25ms 1 No issue's T#5ms 1 No issue's T#1ms 1 No issue's As seen in the table, tasktimes as quick as 1 milliseconds ( T#1ms or 1x10^-3 )are working correct. Beware, your mileage may vary because of various reasons e.g. bigger programcode, more tasks, multitasking, etc, etc. Installing the MCP7941 for SRAM/RTC usage in CODESYS You can use this driver in combination with the Monarco HAT or any other pcb which uses the MCP7941x real time clock. It will provide you with 64 bytes battery buffered SRAM Retain support in CODESYS on a Raspberry Pi based hardware, as the Pi has no native SRAM support. Getting and setting the time is not implemented in this library but can easily be achieve with several other common flavoured libraries in CODESYS. MCP7941x hardware setup In order to set up a MCP7941x real time clock, start by connecting it to the RPi and a quartz crystal. The following a rough sketch on how to connect the pins to point one in the right direction - in practice, one might need capacitors to smooth signals or resitors to pull-up the SCL- and SDA-interface, depending for example on the battery and quartz crystal used. X1: Connect to external 32.768 kHz quartz crystal X2: Connect to external 32.768 kHz quartz crystal VBAT: Connect to external battery VSS: Connect to GND (e.g. RPi-Pin 9) VCC: Connect to RPi-Pin 1 (3.3V) MFP: - SCL: Connect to RPi-Pin 5 (GPIO3_SCL1) SDA: Connect to RPi-Pin 3 (GPIO3_SDA1) installing the i2c software tools After connecting the hardware, activated the i2c bus of via sudo raspi-config Choose Advanced Options -> "activate I2C" -> "Yes" and exit the tool. Now update the repository and install i2c-tools sudo apt-get update sudo apt-get install i2c-tools check the adressing/connections Once you have it installed check that the RTC has been detected using: sudo i2cdetect -y 0 # (if using v1 Raspberry Pi or) sudo i2cdetect -y 1 # (if using v2 Raspberry Pi) This will look something like; aliazzz@Raspbian:~ $ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 6f 70: -- -- -- -- -- -- -- -- The MCP7941x has two i2c adresses: 0x57 and 0x6f, if the addresses show up they are ready for communication. 0x57 leads to the EEPROM, a status register and a unique ID register whereas 0x6f is the address that leads to the SRAM and RTC itself The MCP7941x is now ready for use with CODESYS installing the MCP7941 for permanent use under linux NOTE: If you install this chip for linux use, you cannot get access to the SRAM from CODESYS as linux has permanently claimed this resource! Continue at your own risk In order to establish a permanent linux OS connection add, first follow the steps to enable the RTC for use in CODESYS (see above) Once the above steps are completed, follow the below steps. In "/etc/modules" sudo nano /etc/modules add rtc-mcp7941x Edit the file and close it via alt-x and save the changes In "/boot/config.txt" sudo nano /boot/config.txt add dtoverlay=i2c-rtc,mcp7941x Again, edit the file and close it via alt-x and save the changes. Now reboot, After reboot the 'sudo i2cdetect' yields; aliazzz@Raspbian:~ $ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU 70: -- -- -- -- -- -- -- -- The RTC module has been loaded and activated and the RTC is used by linux. In "/lib/udev/hwclock-set" sudo nano /lib/udev/hwclock-set comment out the lines; #if [ -e /run/systemd/system ] ; then # exit 0 #fi Now, synchronize the RTC using the command sudo hwclock -w From now on, the RTC will keep the time and resynchronize the RPi's system time automatically on startup or manually by entering sudo hwclock -r The RTC is now in permanent use of the Linux OS! CODESYS cannot use the SRAM from the RTC if the resource is in permanent use of the OS. On a Monarco HAT UU shows up but you did not install the RTC for use on the linux side.. As for loading the rtc_ds1307 module, this is caused by the plug&play mechanism of the HAT and its onboard EEPROM. For details, see https://www.raspberrypi.org/blog/introducing-raspberry-pi-hats/, namely this "The EEPROM holds the board manufacturer information, GPIO setup and a thing called a ‘device tree‘ fragment – basically a description of the attached hardware that allows Linux to automatically load the required drivers." The steps below work for any device, so we try to find out which module claims the device with the following steps; ls /sys/bus/i2c/devices yields something like; 1-0018 1-006f i2c-1 now enter following (since we are searching for the 6f process); sudo cat /sys/bus/i2c/devices/1-006f/modalias will yield something like i2c:mcp7941x Now, the output will tell which driver is used. To identify if this is an alias use; sudo grep mcp7941x /lib/modules/`uname -r`/modules.alias which hopefully you will get some output like alias alias i2c:mcp7941x rtc_ds1307 alias of:N*T*Cmicrochip,mcp7941xC* rtc_ds1307 alias of:N*T*Cmicrochip,mcp7941x rtc_ds1307 We identified which driver has been hogging our resource. So now we can try to unload it from the modules but this is only possible if it is a loadable module (must not be a compiled kernel). sudo rmmod rtc_ds1307 otherwise you will see the following error: ERROR: Module rtc_ds1307 does not exist in /proc/modules We can now blacklist this driver, so that it will not get loaded on start-up; sudo -s echo "blacklist rtc_ds1307" > /etc/modprobe.d/monarco-rtc.conf Enjoy! Enjoy your RETAIN data support for CODESYS on Raspberry Pi platform! Monarco Hat Realtime Clock SRAM Support Package Download Package I2C MCP7941x Changelog Library usage RETAIN data size restriction of 64 Bytes Performance as performed with the example code Installing the MCP7941 for SRAM/RTC usage in CODESYS MCP7941x hardware setup installing the i2c software tools check the adressing/connections installing the MCP7941 for permanent use under linux On a Monarco HAT UU shows up but you did not install the RTC for use on the linux side.. Enjoy!
Last updated: 20 hours ago

Project Overview (WikiPage)
Project Members: aliazzz (admin) Monarco Hat Package & Monarco Hat Realtime Clock SRAM Support Package Download MonarcoPackage Download BufferedSRAMPackage The Monarco HAT Changelog Hardware prerequisitories Hardware installation and setup Software prerequisitories Codesys Runtime installation Package installation Monarco UART configuration Running the CODESYS project Limitations / Bugs Acknowledgements The Monarco HAT The Monarco HAT is a robust industrial graded HAT, perfectly suited for IOT projects, small home-automation or industrial projects and much more ... It also protects your Raspberry Pi from overvoltage or short-circuiting and simultaneously provides you with enough IO channels and channel configuration versatility. It features analog and digital inputs and outputs, RS-485, 1-Wire bus and a Realtime Clock. The Monarco Hat driver is implemented as an IO device-driver, so there NO function block calls in your software necessary. The HAT is exposed as a hardware device with IO channels and parameters. Just write code, attach a variable to an I/O channel in the hardware tree, ready! You can program your code in any language you desire, either visual or textual. 100% Open source, 100% Pure IEC 61131-3 code (ST) Changelog v2.0.0.x Under Construction devdescr.xml: vendor id set to 0004, device id set to 0005, see https://forge.codesys.com/drv/io-drivers/database/Home/ for details. <DeviceIdentification> <Type>501</Type> <Id>0004 0005</Id> <Version>2.0.0.2</Version> </DeviceIdentification> Ctrl Byte, HWConfig, UserLeds, UserLedMask Retain data support via RTC (new separate .package available!) v2.0.0.0 info Initial release in cforge, forked from my git : https://github.com/Aliazzzz/Monarco-HAT-library-for-CODESYS-V3 Hardware prerequisitories A Raspberry Pi, see https://www.raspberrypi.org/ A Monarco HAT, see https://www.monarco.io/ At least an 8 GB SD Card ... Hardware installation and setup Attach Monarco HAT to Raspberry Pi and power it up; sudo cat /proc/device-tree/hat/vendor should return "REX Controls". sudo cat /proc/device-tree/hat/product should return "Monarco HAT". Disable system console on UART sudo sed 's/ console=serial0,[0-9]\+//' -i /boot/cmdline.txt sudo reboot Install essential tools sudo apt update sudo apt install git Flash Monarco HAT EEPROM (to avoid manual installation of overlay) sudo git clone https://github.com/monarco/monarco-hat-firmware-bin cd monarco-hat-firmware-bin ./monarco-eeprom.sh update Software prerequisitories CODESYS V3 IDE available at https://store.codesys.com/codesys.html, CODESYS Raspberry Pi .package available at https://store.codesys.com/codesys-control-for-raspberry-pi-sl.html, CODESYS Raspberry Pi SL Demo or License (The Demo is unrestricted in technical capabilities but will only run for two hours straight, after which it stops and you have to set it in run again yourself by logging in) Contents of SVN directory : SVN Codesys Runtime installation Installing CODESYS runtime component on pi (Demo or licensed), just follow CODESYS online help steps, it's easy! https://help.codesys.com/webapp/_rbp_install_runtime;product=CODESYS_Control_for_Raspberry_Pi_SL;version=3.5.12.0 Or check this youtube video: [[embed url=https://youtu.be/6FPf3RHWyeU]] Package installation Monarco Hat Package & Monarco Hat Realtime Clock SRAM Support Package Download MonarcoPackage Download SupportPackage Monarco UART configuration Enable CODESYS to use the RS485 UART on the Monarco Hat. Switch to etc direcory and edit the CODESYSControl.cfg; cd etc/ sudo nano CODESYSControl.cfg Add the following lines; [SysCom] Linux.Devicefile=/dev/ttyAMA Now save and Quit nano. Now, do a forced NTP sync sudo timedatectl This will force to sync time with some time server and returns something like, depending on date/time and your time-zone; Local time: zo 2018-09-23 14:46:17 CEST Universal time: zo 2018-09-23 12:46:17 UTC RTC time: zo 2018-09-23 12:46:18 Time zone: Europe/Amsterdam (CEST, +0200) Network time on: yes NTP synchronized: yes RTC in local TZ: no Now you can use the HAT, RS-485 and the Real-Time Clock from within a CODESYS IEC application. Access the RS485 UART via a comlib of you own flavour in CODESYS (like CAA SerialCOM library). Running the CODESYS project Open the provided example project file. Check/Set SPI master parameters: Mode 0, SPI bits 8, Speed(Hz) 1000000 (=1MHz) => can be set up to 4 MHz, slower speeds avoid chance on crc errors Compile, download and run and enjoy! Limitations / Bugs All functionality of the HAT is allready implemented into the core of the driver but some functionality still needs to be routed as parameters. If you experience any bugs, please leave a Ticket Acknowledgements Special thanks goes out to Ingo Hornberger for helping out with difficulties and for his patience. Monarco Hat Package & Monarco Hat Realtime Clock SRAM Support Package Download MonarcoPackage Download BufferedSRAMPackage The Monarco HAT Changelog Hardware prerequisitories Hardware installation and setup Software prerequisitories Codesys Runtime installation Package installation Monarco UART configuration Running the CODESYS project Limitations / Bugs Acknowledgements
Last updated: 20 hours ago

Home (WikiPage)
This is the personal project of aranha11. This project is created automatically during user registration as an easy place to store personal data that doesn't need its own project such as cloned repositories.
Last updated: 2 days ago

(no subject) (Thread)
Last updated: 2 days ago

Post by aliazzz on #50 Change the "Theme" of a project as in overruling the default CSS (Post)
Thank you for the anwser. I will take a look at the landing page.
Last updated: 2 days ago

Ticket #50: Change the "Theme" of a project as in overruling the default CSS (Ticket)
Hi, I am wondering if it could be made possible to change (overrule) the default theme for a project home. I'd like to set apart the CfUnit project giving it a neat theme. This way I can let it stand out of the crowd. [u'Change the "Theme" of a project as in overruling the default CSS', u'Home Project for CODESYS Forge', 0, u'support', 'Ticket', u'tickets', u'Change the "Theme" of a project as in overruling the default CSS', datetime.datetime(2019, 5, 19, 19, 49, 23, 45000), '5a4b8efad85a3d0001a9de7b', u'open', 'forgetracker/model/ticket/Ticket#5ce1a271f55db908537fb5c7', False, 0, u'aliazzz', u'Ticket #50: Change the "Theme" of a project as in overruling the default CSS', 0, u'1.0', False, u'/forge/support/50/', None, datetime.datetime(2019, 5, 19, 18, 37, 37, 242000), None, 50, '', '', u'--init--', u"Hi,\r\n\r\nI am wondering if it could be made possible to change (overrule) the default theme for a project home. I'd like to set apart the CfUnit project giving it a neat theme. This way I can let it stand out of the crowd.\r\n\r\n", False, False, 1]
Last updated: 2 days ago

(no subject) (Thread)
Last updated: 2 days ago

Post by ingo on #50 Change the "Theme" of a project as in overruling the default CSS (Post)
This is not exactly possible. But you can install ablanding page if you like: https://forge.codesys.com/forge/wiki/Landing%20Page/
Last updated: 2 days ago

u/chlebr89 SVN repository (SVN Repository)
Last updated: 2 days ago

u/chlebr89 SVN repository (SVN Repository)
Last updated: 2 days ago

Ticket #18: DeviceLog messages appears to be truncated? (Ticket)
It appears that the DeviceLog message output is truncated. This means that the assert messages get truncated and so import information about which assert failed will not appear. It seems at least some characters from the message get dropped by the devicelog. The message itself is correct as it is sent to the device log and the debug log from within the same function; Device Log() Debug Log() [u'DeviceLog messages appears to be truncated?', u'CfUnit', 0, u'tickets', 'Ticket', u'tickets', u'DeviceLog messages appears to be truncated?', datetime.datetime(2019, 5, 18, 19, 59, 44, 498000), '5ccf1f5ae5b71403c4f66d0f', u'closed', 'forgetracker/model/ticket/Ticket#5cde9ef9f55db9016f7fb8f5', False, 0, u'aliazzz', u'Ticket #18: DeviceLog messages appears to be truncated?', 0, u'2.0', False, u'/prj/cfunit/tickets/18/', u'aliazzz', datetime.datetime(2019, 5, 17, 11, 46, 1, 723000), None, 18, '', '', u'cfunit', u'It appears that the DeviceLog message output is truncated. This means that the assert messages get truncated and so import information about which assert failed will not appear.\r\n\r\nIt seems at least some characters from the message get dropped by the devicelog. \r\nThe message itself is correct as it is sent to the device log and the debug log from within the same function;\r\n\r\n\r\nDevice Log()\r\n\r\n\r\nDebug Log()\r\n\r\n', False, False, 6]
Last updated: 3 days ago

Post by aliazzz on #18 DeviceLog messages appears to be truncated? (Post)
status: open --> closed assigned_to: aliazzz
Last updated: 3 days ago

(no subject) (Thread)
Last updated: 3 days ago

Post by aliazzz on #18 DeviceLog messages appears to be truncated? (Post)
Confirmed by Ingo, it is limited around 128
Last updated: 3 days ago

Post by aliazzz on #19 Create a solution for: Log messages get truncated when longer then 127 chars (Post)
status: open --> closed assigned_to: aliazzz
Last updated: 3 days ago

Ticket #19: Create a solution for: Log messages get truncated when longer then 127 chars (Ticket)
See ticket 18 for ticket information; Several workarounds; 1) Split the message over several log messages, 2) Add a own written logger, 3) Use an ElementCollectionList. Currently implementing option 2[u'Create a solution for: Log messages get truncated when longer then 127 chars', u'CfUnit', 0, u'tickets', 'Ticket', u'tickets', u'Create a solution for: Log messages get truncated when longer then 127 chars', datetime.datetime(2019, 5, 18, 19, 56, 26, 807000), '5ccf1f5ae5b71403c4f66d0f', u'closed', 'forgetracker/model/ticket/Ticket#5cdfcaaaf55db9036e7fb635', False, 0, u'aliazzz', u'Ticket #19: Create a solution for: Log messages get truncated when longer then 127 chars', 0, u'2.0', False, u'/prj/cfunit/tickets/19/', u'aliazzz', datetime.datetime(2019, 5, 18, 9, 4, 42, 95000), None, 19, '', '', u'cfunit', u'See ticket 18 for ticket information;\r\n\r\nSeveral workarounds;\r\n1) Split the message over several log messages,\r\n2) Add a own written logger,\r\n3) Use an ElementCollectionList.\r\n\r\nCurrently implementing option 2', False, False, 3]
Last updated: 3 days ago

(no subject) (Thread)
Last updated: 3 days ago

1 2 3 .. 110 > >> (Page 1 of 110)

Showing results of 2743

Sort by relevance or date