| a/landingpage/index.html | b/landingpage/index.html | ||
|---|---|---|---|
... |
... |
||
| 27 | </a> |
27 | </a> |
| 28 | </div> <!-- /.navbar-header --> |
28 | </div> <!-- /.navbar-header --> |
| 29 | 29 | ||
| 30 | <div class="collapse navbar-collapse navbar-ex1-collapse"> |
30 | <div class="collapse navbar-collapse navbar-ex1-collapse"> |
| 31 | <ul class="nav navbar-nav navbar-right"> |
31 | <ul class="nav navbar-nav navbar-right"> |
| 32 | <li><a href="#jumbotron" class="nav-link">About</a></li> |
||
| 32 | <li><a href="#features" class="nav-link">Features</a></li> |
33 | <li><a href="#features" class="nav-link">Features</a></li> |
| 33 | <li><a href="#tour-head" class="nav-link">Tour</a></li> |
34 | <li><a href="#tour-head" class="nav-link">Tour</a></li> |
| 34 | <li><a href="#Download">Download</a></li> |
35 | <li><a href="#Download">Download</a></li> |
| 35 | <li><a href="#start" class="nav-link">Getting started</a></li> |
36 | <li><a href="#start" class="nav-link">Getting started</a></li> |
| 36 | <li><a href="#tuturial" class="nav-link">Tutorial</a></li> |
37 | <li><a href="#Resources" class="nav-link">Resources</a></li> |
| 37 | <li><a href="#about" class="nav-link">About</a></li> |
||
| 38 | </ul> |
38 | </ul> |
| 39 | </div> <!-- /.navbar-collapse --> |
39 | </div> <!-- /.navbar-collapse --> |
| 40 | </div> <!-- /.container --> |
40 | </div> <!-- /.container --> |
| 41 | </nav> <!-- /.navbar --> |
41 | </nav> <!-- /.navbar --> |
| 42 | 42 | ||
| 43 | 43 | ||
| 44 | <div id="top" class="jumbotron"> |
44 | <div id="top" class="jumbotron"> |
| 45 | <div class="container"> |
45 | <div class="container"> |
| 46 | <h1>CfUnit — CODESYS Forge Unit Testing framework</h1> |
46 | <h1> |
| 47 | CfUnit — CODESYS Forge Unit Testing framework |
||
| 48 | </h1> |
||
| 47 | <h2>'CfUnit' is motivated by absence of 'good and free' open source IEC61131-3 automated unit-testing solutions. Developed in ST for CODESYS based PLC systems. MIT-Licensed</h2> |
49 | <h2> |
| 50 | 'CfUnit' is motivated by absence of 'good and free' open source IEC61131-3 automated unit-testing solutions. |
||
| 51 | Written in Structured-Text for CODESYS based PLC systems. MIT-licensed. |
||
| 52 | </h2> |
||
| 48 | <p><a class="btn btn-primary btn-lg" href="#Download">Download <span class="glyphicon glyphicon-circle-arrow-right"></span></a></p> |
53 | <p><a class="btn btn-primary btn-lg" href="#Download">Download <span class="glyphicon glyphicon-circle-arrow-right"></span></a></p> |
| 49 | </div> <!-- /.container --> |
54 | <br> |
| 55 | <h4> |
||
| 56 | Forked from <a href="https://www.tcunit.org">TcUnit</a> by Jakob Sagatowski for TwinCAT3. Assistance provided |
||
| 57 | by zer0g & Ingo was greatly appreciated. Without their assistance, porting alone would have taken me several |
||
| 58 | months. Kudos for helping me out with various tickets and providing invalueable feedback! |
||
| 59 | <h4> |
||
| 60 | </div> <!-- /.container --> |
||
| 50 | </div> <!-- /.jumbotron --> |
61 | </div> <!-- /.jumbotron --> |
| 51 | 62 | ||
| 52 | 63 | ||
| 53 | <div class="container"> |
64 | <div class="container"> |
| 54 | <h3 id="features" class="subhead">Features</h3> |
65 | <h3 id="features" class="subhead">Features</h3> |
... |
... |
||
| 99 | </div> |
110 | </div> |
| 100 | </div> |
111 | </div> |
| 101 | <div class="item"> |
112 | <div class="item"> |
| 102 | <img src="img/TestSuite.png"> |
113 | <img src="img/TestSuite.png"> |
| 103 | <div class="carousel-caption d-md-block"> |
114 | <div class="carousel-caption d-md-block"> |
| 104 | Step 2: Define a Test Suite |
115 | Step 2: Define Test Suite(s) |
| 105 | </div> |
116 | </div> |
| 106 | </div> |
117 | </div> |
| 107 | <div class="item"> |
118 | <div class="item"> |
| 108 | <img src="img/TestMethod.png"> |
119 | <img src="img/TestMethod.png"> |
| 109 | <div class="carousel-caption d-md-block"> |
120 | <div class="carousel-caption d-md-block"> |
| 110 | Step 3: Define Test Method |
121 | Step 3: Define Test Method(s) |
| 111 | </div> |
122 | </div> |
| 112 | </div> |
123 | </div> |
| 113 | <div class="item"> |
124 | <div class="item"> |
| 114 | <img src="img/programcall.png"> |
125 | <img src="img/programcall.png"> |
| 115 | <div class="carousel-caption d-md-block"> |
126 | <div class="carousel-caption d-md-block"> |
| 116 | Step 4: Define Program and call TestSuite |
127 | Step 4: Define TestProgram, call Test Suite |
| 117 | </div> |
128 | </div> |
| 118 | </div> |
129 | </div> |
| 119 | <div class="item"> |
130 | <div class="item"> |
| 120 | <img src="img/SimpleCfUnitExample.gif"> |
131 | <img src="img/SimpleCfUnitExample.gif"> |
| 121 | <div class="carousel-caption d-md-block"> |
132 | <div class="carousel-caption d-md-block"> |
| 122 | Step 5: Run Program and check TestLog |
133 | Step 5: Run TestProgram and check TestLog |
| 123 | </div> |
134 | </div> |
| 124 | </div> |
135 | </div> |
| 125 | </div> |
136 | </div> |
| 126 | <a class="left carousel-control" href="#tour" data-slide="prev"> |
137 | <a class="left carousel-control" href="#tour" data-slide="prev"> |
| 127 | <span class="glyphicon glyphicon-chevron-left"></span> |
138 | <span class="glyphicon glyphicon-chevron-left"></span> |
... |
... |
||
| 132 | </div> <!-- #tour --> |
143 | </div> <!-- #tour --> |
| 133 | </div> <!-- /.col-md-12 --> |
144 | </div> <!-- /.col-md-12 --> |
| 134 | </div> <!-- /.row --> |
145 | </div> <!-- /.row --> |
| 135 | </div> <!-- /.container --> |
146 | </div> <!-- /.container --> |
| 136 | </div> <!-- /.container-alternate --> |
147 | </div> <!-- /.container-alternate --> |
| 137 | 148 | ||
| 138 | 149 | ||
| 139 | <div class="container"> |
150 | <div class="container"> |
| 140 | <h3 id="Download" class="subhead">Download</h3> |
151 | <h3 id="Download" class="subhead">Download</h3> |
| 141 | <div class="row download"> |
152 | <div class="row download" > |
| 142 | <p class="col-md-4 col-sm-6"> |
153 | <p> |
| 143 | 154 | <ul class="col-md-4 col-sm-6 text-center"> |
|
| 144 | </p> |
155 | <p> |
| 145 | <p> |
||
| 146 | <ul class="col-md-4 col-sm-6"> |
||
| 147 | <strong>Contains all you need:</strong> |
||
| 148 | <ul> |
||
| 149 | <li>CfUnit v1.0.0.0 Library</li> |
||
| 150 | <li>Verifier Project</li> |
||
| 151 | <li>Simple Example Project</li> |
||
| 152 | </ul><br> |
||
| 153 | <center> |
||
| 154 | <a href="https://forge.codesys.com/prj/cfunit/code/HEAD/tree/tags/v1.0.0.0/CfUnit.package?format=raw" class="btn btn-primary">Download Package</a> |
156 | <a href="https://forge.codesys.com/prj/cfunit/code/HEAD/tree/tags/v1.0.0.0/CfUnit.package?format=raw" class="btn btn-primary">CfUnit v1.0.0.0 Package</a> |
| 155 | </center> |
157 | </p> |
| 156 | </p> |
158 | <strong>Contains</strong> |
| 159 | <br>CfUnit Library |
||
| 160 | <br>Verifier Project |
||
| 161 | <br>Simple Example Project |
||
| 162 | </p> |
||
| 157 | </div> <!-- /.row Download --> |
163 | </div> <!-- /.row Download --> |
| 164 | |||
| 165 | |||
| 158 | </div> <!-- /.container --> |
166 | </div> <!-- /.container --> |
| 159 | 167 | <div class="container"> |
|
| 160 | |||
| 161 | <div class="container"> |
||
| 162 | <h3 id="start" class="subhead">Getting started</h3> |
168 | <h3 id="start" class="subhead">Getting started</h3> |
| 163 | <div class="row start" align="center"> |
169 | <div class="row start" > |
| 164 | <div class="col-md-10 col-md-offset-1"> |
170 | <p> |
| 165 | <ul> |
171 | <ul class="col-md-4 col-sm-6 text-center"> |
| 166 | <li>Extend your test with <code>CfUnit.FB_TestSuite</code>,</li> |
172 | <strong>A detailed step by step tutorial for the Simple CfUnit example project can be found <a href="https://forge.codesys.com/prj/cfunit/home/Home/">here</a>.</strong> |
| 167 | <li>Add the attribute-pragma <code>{attribute ‘call_after_init’}</code>,</li> |
173 | <br>Extend your test with <code>CfUnit.FB_TestSuite</code>, |
| 168 | <li>Define the inputs and define the expected output (result),</li> |
174 | <br>Add the attribute-pragma <code>{attribute ‘call_after_init’}</code>, |
| 169 | <li>Call the CfUnit-assert methods to compare the expected output to the actual output,</li> |
175 | <br>Define the inputs and define the expected output (result), |
| 170 | <li>Close the test with <code>TEST_FINISHED()</code> when finished.</li> |
176 | <br>Call the CfUnit-assert methods to compare the expected output to the actual output,i> |
| 171 | <li>Call the test method from the main FB Body</li> |
177 | <br>Close the test with <code>TEST_FINISHED()</code> when finished. |
| 172 | </ul> |
178 | <br>Call the test method from the main FB Body |
| 173 | </div> |
179 | </p> |
| 174 | </div> <!-- /.start --> |
180 | </div> |
| 175 | </div> <!-- /.container --> |
181 | </div> <!-- /.start --> |
| 176 | 182 | </div> <!-- /.container --> |
|
| 177 | <div class="container"> |
183 | |
| 178 | <h3 id="tuturial" class="subhead">Tutorial</h3> |
184 | |
| 179 | <div class="row tutorial"> |
185 | <div class="container"> |
| 180 | <div class="col-md-10 col-md-offset-1 text-center"> |
186 | <h3 id="Resources" class="subhead">Resources</h3> |
| 181 | </p> |
187 | <div class="row Resources"> |
| 182 | A step by step tutorial for the Simple CfUnit example project can be <a href="https://forge.codesys.com/prj/cfunit/home/Home/">found here.</a> |
188 | <div class="col-md-10 col-md-offset-1 text-center"> |
| 183 | </p> |
189 | <p class="col-md-4 col-sm-6"> |
| 184 | <p class="col-md-4 col-sm-6"> |
190 | <strong>API</strong><br> |
| 185 | <strong>API</strong><br> |
191 | Online API reference can be found <a href="https://forge.codesys.com/prj/cfunit/home/CfUnit%20API%20Reference/">here</a>. |
| 186 | Online API reference can be <a href="https://forge.codesys.com/prj/cfunit/home/CfUnit%20API%20Reference/"> found here</a>. |
192 | </p> |
| 187 | </p> |
193 | <p class="col-md-4 col-sm-6"> |
| 188 | <p class="col-md-4 col-sm-6"> |
194 | <strong>Q&A</strong><br> |
| 189 | <strong>Q&A</strong><br> |
195 | If you have any questions, you can drop them <a href="https://forge.codesys.com/prj/cfunit/questions/">here</a>.<br> |
| 190 | If you have any questions, you can drop <a href="https://forge.codesys.com/prj/cfunit/questions/">them here</a>.<br> |
196 | If you cannot find your anwser, you can always drop a question in the comment.<br> |
| 191 | If you cannot find your anwser, you can always drop a question in the comment.<br> |
197 | Posted questions will be modderated into the Q&A for future reference. |
| 192 | Posted questions will be modderated into the Q&A for future reference. |
198 | </p> |
| 193 | </p> |
199 | <p class="col-md-4 col-sm-6"> |
| 194 | <p class="col-md-4 col-sm-6"> |
200 | <strong>Bugs</strong><br> |
| 195 | <strong>Bugs</strong><br> |
201 | Bugs can be reported by opening a ticket <a href="https://forge.codesys.com/prj/cfunit/tickets/">here</a>. |
| 196 | Bugs can be reported by opening a <a href="https://forge.codesys.com/prj/cfunit/tickets/">ticket here</a>. |
202 | </p> |
| 197 | </p> |
203 | </div> <!-- /.col-md-10 --> |
| 198 | </div> <!-- /.col-md-10 --> |
204 | </div> <!-- /.row --> |
| 199 | </div> <!-- /.row --> |
205 | </div> <!-- /.Resources --> |
| 200 | </div> <!-- /.tutorial --> |
206 | </div> <!-- /.container --> |
| 201 | </div> <!-- /.container --> |
207 | |
| 202 | 208 | <br> |
|
| 203 | 209 | <footer> |
|
| 204 | <div class="container-alternate"> |
210 | <div class="container clearfix"> |
| 205 | <div class="container"> |
211 | <p class="pull-left"> |
| 206 | <h3 id="about" class="subhead">About</h3> |
212 | </p> |
| 207 | <div class="row about"> |
213 | <p class="pull-right"> |
| 208 | <div class="col-md-10 col-md-offset-1 text-center"> |
214 | <a href="https://forge.codesys.com/u/aliazzz/profile/"><img src="img/aliazzz.png" alt="Brains ... & Anything IEC61131-3"></a>Brains ... & Anything IEC61131-3<br>Aliazzz |
| 209 | </p> |
215 | </p> |
| 210 | Kudos to Jakob Sagatowski for his kind permission to port his testing framework to CODESYS. |
216 | </div> <!-- /.container --> |
| 211 | Assistance provided by zer0g & Ingo was greatly appreciated. Without their assistance the porting alone would have taken me several months. |
217 | </footer> |
| 212 | Kudos for helping out with various tickets and providing valueable feedback! |
218 | |
| 213 | </p> |
219 | |
| 214 | <p> |
220 | <script src="js/jquery.js"></script> |
| 215 | Forked and ported from <a href="https://www.tcunit.org">TcUnit</a>, originally written for TwinCAT3 by Jakob Sagatowski. |
221 | <script src="js/bootstrap.min.js"></script> |
| 216 | <p> |
222 | <script> |
| 217 | </div> <!-- /.col-md-10 --> |
223 | $(".nav-link").click(function(e) { |
| 218 | </div> <!-- /.row --> |
224 | e.preventDefault(); |
| 219 | </div> <!-- /.container --> |
225 | var link = $(this); |
| 220 | </div> <!-- /.container-alternate --> |
226 | var href = link.attr("href"); |
| 221 | 227 | $("html,body").animate({scrollTop: $(href).offset().top - 80}, 500); |
|
| 222 | 228 | link.closest(".navbar").find(".navbar-toggle:not(.collapsed)").click(); |
|
| 223 | <footer> |
229 | }); |
| 224 | <div class="container clearfix"> |
230 | </script> |
| 225 | <p class="pull-left"> |
||
| 226 | </p> |
||
| 227 | <p class="pull-right"> |
||
| 228 | <a href="https://forge.codesys.com/u/aliazzz/profile/"><img src="img/aliazzz.png" alt="Brains ... & Anything IEC61131-3"></a>Brains ... & Anything IEC61131-3<br>Aliazzz |
||
| 229 | </p> |
||
| 230 | </div> <!-- /.container --> |
||
| 231 | </footer> |
||
| 232 | |||
| 233 | |||
| 234 | <script src="js/jquery.js"></script> |
||
| 235 | <script src="js/bootstrap.min.js"></script> |
||
| 236 | <script> |
||
| 237 | $(".nav-link").click(function(e) { |
||
| 238 | e.preventDefault(); |
||
| 239 | var link = $(this); |
||
| 240 | var href = link.attr("href"); |
||
| 241 | $("html,body").animate({scrollTop: $(href).offset().top - 80}, 500); |
||
| 242 | link.closest(".navbar").find(".navbar-toggle:not(.collapsed)").click(); |
||
| 243 | }); |
||
| 244 | </script> |
||
| 245 | |||
| 246 | </body> |
231 | </body> |
| 247 | </html> |
232 | </html> |