1use super::{
3 clip_pixel_frames_offset_bottom, clip_pixel_frames_offset_left, clip_pixel_frames_offset_right,
4 clip_pixel_frames_offset_top, Offset, PixelFrame,
5};
6
7impl PixelFrame {
9 pub fn offset(&self, offset: Offset) -> Self {
26 match offset {
27 Offset::Left(offset) => self.offset_left(offset),
28 Offset::Right(offset) => self.offset_right(offset),
29 Offset::Bottom(offset) => self.offset_bottom(offset),
30 Offset::Top(offset) => self.offset_top(offset),
31 }
32 }
33
34 fn offset_left(&self, offset: u8) -> Self {
37 assert!(offset < 9);
38 clip_pixel_frames_offset_left(*self, PixelFrame::default(), offset)
39 }
40
41 fn offset_right(&self, offset: u8) -> Self {
42 assert!(offset < 9);
43 clip_pixel_frames_offset_right(*self, PixelFrame::default(), offset)
44 }
45
46 fn offset_bottom(&self, offset: u8) -> Self {
47 assert!(offset < 9);
48 clip_pixel_frames_offset_bottom(*self, PixelFrame::default(), offset)
49 }
50
51 fn offset_top(&self, offset: u8) -> Self {
52 assert!(offset < 9);
53 clip_pixel_frames_offset_top(*self, PixelFrame::default(), offset)
54 }
55}
56
57#[cfg(test)]
58mod tests {
59 use super::*;
60 use crate::PixelColor;
61
62 const DARK: PixelColor = PixelColor::BLACK;
63 const BLUE: PixelColor = PixelColor::BLUE;
64
65 const FRAME_ZERO: [PixelColor; 64] = [
66 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, ];
75
76 const SYMBOL_FRAME: [PixelColor; 64] = [
77 DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, ];
86
87 const OFFSET_RIGHT_ONE: [PixelColor; 64] = [
89 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, ];
98
99 const OFFSET_RIGHT_TWO: [PixelColor; 64] = [
100 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, ];
109
110 const OFFSET_RIGHT_THREE: [PixelColor; 64] = [
111 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, ];
120
121 const OFFSET_RIGHT_FOUR: [PixelColor; 64] = [
122 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, ];
131
132 const OFFSET_RIGHT_FIVE: [PixelColor; 64] = [
133 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, ];
142
143 const OFFSET_RIGHT_SIX: [PixelColor; 64] = [
144 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, ];
153
154 const OFFSET_RIGHT_SEVEN: [PixelColor; 64] = [
155 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, ];
164
165 const OFFSET_LEFT_ONE: [PixelColor; 64] = [
167 DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, ];
176
177 const OFFSET_LEFT_TWO: [PixelColor; 64] = [
178 DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, ];
187
188 const OFFSET_LEFT_THREE: [PixelColor; 64] = [
189 DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, ];
198
199 const OFFSET_LEFT_FOUR: [PixelColor; 64] = [
200 DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, ];
209
210 const OFFSET_LEFT_FIVE: [PixelColor; 64] = [
211 DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, ];
220
221 const OFFSET_LEFT_SIX: [PixelColor; 64] = [
222 DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, ];
231
232 const OFFSET_LEFT_SEVEN: [PixelColor; 64] = [
233 BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, ];
242
243 const OFFSET_TOP_ONE: [PixelColor; 64] = [
245 DARK, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, ];
254
255 const OFFSET_TOP_TWO: [PixelColor; 64] = [
256 DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, ];
265
266 const OFFSET_TOP_THREE: [PixelColor; 64] = [
267 DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, ];
276
277 const OFFSET_TOP_FOUR: [PixelColor; 64] = [
278 DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, ];
287
288 const OFFSET_TOP_FIVE: [PixelColor; 64] = [
289 DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, ];
298
299 const OFFSET_TOP_SIX: [PixelColor; 64] = [
300 DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, ];
309
310 const OFFSET_TOP_SEVEN: [PixelColor; 64] = [
311 BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, ];
320
321 const OFFSET_BOTTOM_ONE: [PixelColor; 64] = [
323 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, BLUE, ];
332
333 const OFFSET_BOTTOM_TWO: [PixelColor; 64] = [
334 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, BLUE, ];
343
344 const OFFSET_BOTTOM_THREE: [PixelColor; 64] = [
345 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, BLUE, ];
354
355 const OFFSET_BOTTOM_FOUR: [PixelColor; 64] = [
356 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, BLUE, ];
365
366 const OFFSET_BOTTOM_FIVE: [PixelColor; 64] = [
367 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, DARK, DARK, DARK, DARK, DARK, BLUE, BLUE, BLUE, ];
376
377 const OFFSET_BOTTOM_SIX: [PixelColor; 64] = [
378 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, DARK, BLUE, DARK, DARK, DARK, DARK, BLUE, BLUE, ];
387
388 const OFFSET_BOTTOM_SEVEN: [PixelColor; 64] = [
389 DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, DARK, BLUE, ];
398
399 #[test]
400 fn pixel_frame_offsets_to_the_left() {
401 let symbol = PixelFrame::new(&SYMBOL_FRAME);
402 assert_eq!(
403 symbol.offset(Offset::left(0)),
404 PixelFrame::new(&SYMBOL_FRAME)
405 );
406 assert_eq!(
407 symbol.offset(Offset::left(1)),
408 PixelFrame::new(&OFFSET_LEFT_ONE)
409 );
410 assert_eq!(
411 symbol.offset(Offset::left(2)),
412 PixelFrame::new(&OFFSET_LEFT_TWO)
413 );
414 assert_eq!(
415 symbol.offset(Offset::left(3)),
416 PixelFrame::new(&OFFSET_LEFT_THREE)
417 );
418 assert_eq!(
419 symbol.offset(Offset::left(4)),
420 PixelFrame::new(&OFFSET_LEFT_FOUR)
421 );
422 assert_eq!(
423 symbol.offset(Offset::left(5)),
424 PixelFrame::new(&OFFSET_LEFT_FIVE)
425 );
426 assert_eq!(
427 symbol.offset(Offset::left(6)),
428 PixelFrame::new(&OFFSET_LEFT_SIX)
429 );
430 assert_eq!(
431 symbol.offset(Offset::left(7)),
432 PixelFrame::new(&OFFSET_LEFT_SEVEN)
433 );
434 assert_eq!(symbol.offset(Offset::left(8)), PixelFrame::new(&FRAME_ZERO));
435 }
436
437 #[test]
438 #[should_panic]
439 fn pixel_frame_panics_when_offset_to_the_left_is_greater_than_8() {
440 let symbol = PixelFrame::new(&SYMBOL_FRAME);
441 let _ = symbol.offset(Offset::left(9));
442 }
443
444 #[test]
445 fn pixel_frame_offsets_to_the_right() {
446 let symbol = PixelFrame::new(&SYMBOL_FRAME);
447 assert_eq!(
448 symbol.offset(Offset::right(0)),
449 PixelFrame::new(&SYMBOL_FRAME)
450 );
451 assert_eq!(
452 symbol.offset(Offset::right(1)),
453 PixelFrame::new(&OFFSET_RIGHT_ONE)
454 );
455 assert_eq!(
456 symbol.offset(Offset::right(2)),
457 PixelFrame::new(&OFFSET_RIGHT_TWO)
458 );
459 assert_eq!(
460 symbol.offset(Offset::right(3)),
461 PixelFrame::new(&OFFSET_RIGHT_THREE)
462 );
463 assert_eq!(
464 symbol.offset(Offset::right(4)),
465 PixelFrame::new(&OFFSET_RIGHT_FOUR)
466 );
467 assert_eq!(
468 symbol.offset(Offset::right(5)),
469 PixelFrame::new(&OFFSET_RIGHT_FIVE)
470 );
471 assert_eq!(
472 symbol.offset(Offset::right(6)),
473 PixelFrame::new(&OFFSET_RIGHT_SIX)
474 );
475 assert_eq!(
476 symbol.offset(Offset::right(7)),
477 PixelFrame::new(&OFFSET_RIGHT_SEVEN)
478 );
479 assert_eq!(
480 symbol.offset(Offset::right(8)),
481 PixelFrame::new(&FRAME_ZERO)
482 );
483 }
484
485 #[test]
486 #[should_panic]
487 fn pixel_frame_panics_when_offset_to_the_right_is_greater_than_8() {
488 let symbol = PixelFrame::new(&SYMBOL_FRAME);
489 let _ = symbol.offset(Offset::right(9));
490 }
491
492 #[test]
493 fn pixel_frame_offsets_to_the_bottom() {
494 let symbol = PixelFrame::new(&SYMBOL_FRAME);
495 assert_eq!(
496 symbol.offset(Offset::bottom(0)),
497 PixelFrame::new(&SYMBOL_FRAME)
498 );
499 assert_eq!(
500 symbol.offset(Offset::bottom(1)),
501 PixelFrame::new(&OFFSET_BOTTOM_ONE)
502 );
503 assert_eq!(
504 symbol.offset(Offset::bottom(2)),
505 PixelFrame::new(&OFFSET_BOTTOM_TWO)
506 );
507 assert_eq!(
508 symbol.offset(Offset::bottom(3)),
509 PixelFrame::new(&OFFSET_BOTTOM_THREE)
510 );
511 assert_eq!(
512 symbol.offset(Offset::bottom(4)),
513 PixelFrame::new(&OFFSET_BOTTOM_FOUR)
514 );
515 assert_eq!(
516 symbol.offset(Offset::bottom(5)),
517 PixelFrame::new(&OFFSET_BOTTOM_FIVE)
518 );
519 assert_eq!(
520 symbol.offset(Offset::bottom(6)),
521 PixelFrame::new(&OFFSET_BOTTOM_SIX)
522 );
523 assert_eq!(
524 symbol.offset(Offset::bottom(7)),
525 PixelFrame::new(&OFFSET_BOTTOM_SEVEN)
526 );
527 assert_eq!(
528 symbol.offset(Offset::bottom(8)),
529 PixelFrame::new(&FRAME_ZERO)
530 );
531 }
532
533 #[test]
534 #[should_panic]
535 fn pixel_frame_panics_when_offset_to_the_bottom_is_greater_than_8() {
536 let symbol = PixelFrame::new(&SYMBOL_FRAME);
537 let _ = symbol.offset(Offset::bottom(9));
538 }
539
540 #[test]
541 fn pixel_frame_offsets_to_the_top() {
542 let symbol = PixelFrame::new(&SYMBOL_FRAME);
543 assert_eq!(
544 symbol.offset(Offset::top(0)),
545 PixelFrame::new(&SYMBOL_FRAME)
546 );
547 assert_eq!(
548 symbol.offset(Offset::top(1)),
549 PixelFrame::new(&OFFSET_TOP_ONE)
550 );
551 assert_eq!(
552 symbol.offset(Offset::top(2)),
553 PixelFrame::new(&OFFSET_TOP_TWO)
554 );
555 assert_eq!(
556 symbol.offset(Offset::top(3)),
557 PixelFrame::new(&OFFSET_TOP_THREE)
558 );
559 assert_eq!(
560 symbol.offset(Offset::top(4)),
561 PixelFrame::new(&OFFSET_TOP_FOUR)
562 );
563 assert_eq!(
564 symbol.offset(Offset::top(5)),
565 PixelFrame::new(&OFFSET_TOP_FIVE)
566 );
567 assert_eq!(
568 symbol.offset(Offset::top(6)),
569 PixelFrame::new(&OFFSET_TOP_SIX)
570 );
571 assert_eq!(
572 symbol.offset(Offset::top(7)),
573 PixelFrame::new(&OFFSET_TOP_SEVEN)
574 );
575 assert_eq!(symbol.offset(Offset::top(8)), PixelFrame::new(&FRAME_ZERO));
576 }
577
578 #[test]
579 #[should_panic]
580 fn pixel_frame_panics_when_offset_to_the_top_is_greater_than_8() {
581 let symbol = PixelFrame::new(&SYMBOL_FRAME);
582 let _ = symbol.offset(Offset::top(9));
583 }
584}