|
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> |