|
1 | 1 | import chai from 'chai'; |
2 | 2 | import fs from 'fs'; |
3 | | -import { GCodeParser, parseFile, parseString, parseStream } from '../lib'; |
| 3 | +import { |
| 4 | + GCodeParser, |
| 5 | + parseStream, |
| 6 | + parseString, |
| 7 | + parseStringSync, |
| 8 | + parseFile, |
| 9 | + parseFileSync |
| 10 | +} from '../lib'; |
4 | 11 |
|
5 | 12 | const expect = chai.expect; |
6 | 13 | const should = chai.should(); |
7 | 14 |
|
8 | | -describe('G-code Parser', () => { |
| 15 | +describe('gcode-parser', () => { |
9 | 16 | describe('Pass a null value as the first argument', () => { |
10 | 17 | it('should call parseString\'s callback.', (done) => { |
11 | 18 | parseString(null, (err, results) => { |
@@ -138,7 +145,7 @@ describe('G-code Parser', () => { |
138 | 145 | }); |
139 | 146 | }); |
140 | 147 |
|
141 | | - describe('parseFile / parseStream / parseString', () => { |
| 148 | + describe('parseStream()', () => { |
142 | 149 | const expectedResults = [ |
143 | 150 | { |
144 | 151 | line: 'G0 X-5 Y0 Z0 F200', |
@@ -170,30 +177,175 @@ describe('G-code Parser', () => { |
170 | 177 | } |
171 | 178 | ]; |
172 | 179 |
|
173 | | - it('should get the expected results in the parseFile\'s callback.', (done) => { |
174 | | - parseFile('test/fixtures/circle.gcode', (err, results) => { |
| 180 | + it('should get expected results in the callback.', (done) => { |
| 181 | + const stream = fs.createReadStream('test/fixtures/circle.gcode', { encoding: 'utf8' }); |
| 182 | + parseStream(stream, (err, results) => { |
175 | 183 | expect(results).to.deep.equal(expectedResults); |
176 | 184 | done(); |
177 | 185 | }); |
178 | 186 | }); |
| 187 | + }); |
179 | 188 |
|
180 | | - it('should get the expected results in the parseStream\'s callback.', (done) => { |
181 | | - const stream = fs.createReadStream('test/fixtures/circle.gcode', { encoding: 'utf8' }); |
182 | | - parseStream(stream, (err, results) => { |
| 189 | + describe('parseString()', () => { |
| 190 | + const expectedResults = [ |
| 191 | + { |
| 192 | + line: 'G0 X-5 Y0 Z0 F200', |
| 193 | + words: [['G', 0], ['X', -5], ['Y', 0], ['Z', 0], ['F', 200]] |
| 194 | + }, |
| 195 | + { |
| 196 | + line: 'G2 X0 Y5 I5 J0 F200', |
| 197 | + words: [['G', 2], ['X', 0], ['Y', 5], ['I', 5], ['J', 0], ['F', 200]] |
| 198 | + }, |
| 199 | + { |
| 200 | + line: 'G02 X5 Y0 I0 J-5', |
| 201 | + words: [['G', 2], ['X', 5], ['Y', 0], ['I', 0], ['J', -5]] |
| 202 | + }, |
| 203 | + { |
| 204 | + line: 'G02 X0 Y-5 I-5 J0', |
| 205 | + words: [['G', 2], ['X', 0], ['Y',-5], ['I', -5], ['J', 0]] |
| 206 | + }, |
| 207 | + { |
| 208 | + line: 'G02 X-5 Y0 I0 J5', |
| 209 | + words: [['G', 2], ['X', -5], ['Y', 0], ['I', 0], ['J', 5]] |
| 210 | + }, |
| 211 | + { |
| 212 | + line: 'G01 Z1 F500', |
| 213 | + words: [['G', 1], ['Z', 1], ['F', 500]] |
| 214 | + }, |
| 215 | + { |
| 216 | + line: 'G00 X0 Y0 Z5', |
| 217 | + words: [['G', 0], ['X', 0], ['Y', 0], ['Z', 5]] |
| 218 | + } |
| 219 | + ]; |
| 220 | + |
| 221 | + it('should get expected results in the callback.', (done) => { |
| 222 | + const str = fs.readFileSync('test/fixtures/circle.gcode', 'utf8'); |
| 223 | + parseString(str, (err, results) => { |
183 | 224 | expect(results).to.deep.equal(expectedResults); |
184 | 225 | done(); |
185 | 226 | }); |
186 | 227 | }); |
| 228 | + }); |
| 229 | + |
| 230 | + describe('parseStringSync()', () => { |
| 231 | + const expectedResults = [ |
| 232 | + { |
| 233 | + line: 'G0 X-5 Y0 Z0 F200', |
| 234 | + words: [['G', 0], ['X', -5], ['Y', 0], ['Z', 0], ['F', 200]] |
| 235 | + }, |
| 236 | + { |
| 237 | + line: 'G2 X0 Y5 I5 J0 F200', |
| 238 | + words: [['G', 2], ['X', 0], ['Y', 5], ['I', 5], ['J', 0], ['F', 200]] |
| 239 | + }, |
| 240 | + { |
| 241 | + line: 'G02 X5 Y0 I0 J-5', |
| 242 | + words: [['G', 2], ['X', 5], ['Y', 0], ['I', 0], ['J', -5]] |
| 243 | + }, |
| 244 | + { |
| 245 | + line: 'G02 X0 Y-5 I-5 J0', |
| 246 | + words: [['G', 2], ['X', 0], ['Y',-5], ['I', -5], ['J', 0]] |
| 247 | + }, |
| 248 | + { |
| 249 | + line: 'G02 X-5 Y0 I0 J5', |
| 250 | + words: [['G', 2], ['X', -5], ['Y', 0], ['I', 0], ['J', 5]] |
| 251 | + }, |
| 252 | + { |
| 253 | + line: 'G01 Z1 F500', |
| 254 | + words: [['G', 1], ['Z', 1], ['F', 500]] |
| 255 | + }, |
| 256 | + { |
| 257 | + line: 'G00 X0 Y0 Z5', |
| 258 | + words: [['G', 0], ['X', 0], ['Y', 0], ['Z', 5]] |
| 259 | + } |
| 260 | + ]; |
187 | 261 |
|
188 | | - it('should get the expected results in the parseString\'s callback.', (done) => { |
| 262 | + it('should return expected results.', (done) => { |
189 | 263 | const str = fs.readFileSync('test/fixtures/circle.gcode', 'utf8'); |
190 | | - parseString(str, (err, results) => { |
| 264 | + const results = parseStringSync(str); |
| 265 | + expect(results).to.deep.equal(expectedResults); |
| 266 | + done(); |
| 267 | + }); |
| 268 | + }); |
| 269 | + |
| 270 | + describe('parseFile()', () => { |
| 271 | + const expectedResults = [ |
| 272 | + { |
| 273 | + line: 'G0 X-5 Y0 Z0 F200', |
| 274 | + words: [['G', 0], ['X', -5], ['Y', 0], ['Z', 0], ['F', 200]] |
| 275 | + }, |
| 276 | + { |
| 277 | + line: 'G2 X0 Y5 I5 J0 F200', |
| 278 | + words: [['G', 2], ['X', 0], ['Y', 5], ['I', 5], ['J', 0], ['F', 200]] |
| 279 | + }, |
| 280 | + { |
| 281 | + line: 'G02 X5 Y0 I0 J-5', |
| 282 | + words: [['G', 2], ['X', 5], ['Y', 0], ['I', 0], ['J', -5]] |
| 283 | + }, |
| 284 | + { |
| 285 | + line: 'G02 X0 Y-5 I-5 J0', |
| 286 | + words: [['G', 2], ['X', 0], ['Y',-5], ['I', -5], ['J', 0]] |
| 287 | + }, |
| 288 | + { |
| 289 | + line: 'G02 X-5 Y0 I0 J5', |
| 290 | + words: [['G', 2], ['X', -5], ['Y', 0], ['I', 0], ['J', 5]] |
| 291 | + }, |
| 292 | + { |
| 293 | + line: 'G01 Z1 F500', |
| 294 | + words: [['G', 1], ['Z', 1], ['F', 500]] |
| 295 | + }, |
| 296 | + { |
| 297 | + line: 'G00 X0 Y0 Z5', |
| 298 | + words: [['G', 0], ['X', 0], ['Y', 0], ['Z', 5]] |
| 299 | + } |
| 300 | + ]; |
| 301 | + |
| 302 | + it('should get expected results in the callback.', (done) => { |
| 303 | + parseFile('test/fixtures/circle.gcode', (err, results) => { |
191 | 304 | expect(results).to.deep.equal(expectedResults); |
192 | 305 | done(); |
193 | 306 | }); |
194 | 307 | }); |
195 | 308 | }); |
196 | 309 |
|
| 310 | + describe('parseFileSync()', () => { |
| 311 | + const expectedResults = [ |
| 312 | + { |
| 313 | + line: 'G0 X-5 Y0 Z0 F200', |
| 314 | + words: [['G', 0], ['X', -5], ['Y', 0], ['Z', 0], ['F', 200]] |
| 315 | + }, |
| 316 | + { |
| 317 | + line: 'G2 X0 Y5 I5 J0 F200', |
| 318 | + words: [['G', 2], ['X', 0], ['Y', 5], ['I', 5], ['J', 0], ['F', 200]] |
| 319 | + }, |
| 320 | + { |
| 321 | + line: 'G02 X5 Y0 I0 J-5', |
| 322 | + words: [['G', 2], ['X', 5], ['Y', 0], ['I', 0], ['J', -5]] |
| 323 | + }, |
| 324 | + { |
| 325 | + line: 'G02 X0 Y-5 I-5 J0', |
| 326 | + words: [['G', 2], ['X', 0], ['Y',-5], ['I', -5], ['J', 0]] |
| 327 | + }, |
| 328 | + { |
| 329 | + line: 'G02 X-5 Y0 I0 J5', |
| 330 | + words: [['G', 2], ['X', -5], ['Y', 0], ['I', 0], ['J', 5]] |
| 331 | + }, |
| 332 | + { |
| 333 | + line: 'G01 Z1 F500', |
| 334 | + words: [['G', 1], ['Z', 1], ['F', 500]] |
| 335 | + }, |
| 336 | + { |
| 337 | + line: 'G00 X0 Y0 Z5', |
| 338 | + words: [['G', 0], ['X', 0], ['Y', 0], ['Z', 5]] |
| 339 | + } |
| 340 | + ]; |
| 341 | + |
| 342 | + it('should return expected results.', (done) => { |
| 343 | + const results = parseFileSync('test/fixtures/circle.gcode'); |
| 344 | + expect(results).to.deep.equal(expectedResults); |
| 345 | + done(); |
| 346 | + }); |
| 347 | + }); |
| 348 | + |
197 | 349 | describe('More examples', () => { |
198 | 350 | it('should contain the line number.', (done) => { |
199 | 351 | parseFile('test/fixtures/circle-inch.gcode', (err, list) => { |
|
0 commit comments