pio 0.1.1 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,389 @@
1
+ Archived entries from file /Users/yasuhito/Dropbox/org/pio.org
2
+
3
+
4
+ * DONE gem を分離
5
+ CLOSED: [2013-08-02 金 10:36]
6
+ :LOGBOOK:
7
+ CLOCK: [2013-07-31 水 16:17]--[2013-07-31 水 23:05] => 6:48
8
+ CLOCK: [2013-07-31 水 15:32]--[2013-07-31 水 15:33] => 0:01
9
+ CLOCK: [2013-07-31 水 15:22]--[2013-07-31 水 15:32] => 0:10
10
+ CLOCK: [2013-07-31 水 14:59]--[2013-07-31 水 15:17] => 0:18
11
+ CLOCK: [2013-07-31 水 14:54]--[2013-07-31 水 14:58] => 0:04
12
+ CLOCK: [2013-07-31 水 14:14]--[2013-07-31 水 14:53] => 0:39
13
+ CLOCK: [2013-07-31 水 11:55]--[2013-07-31 水 12:11] => 0:16
14
+ CLOCK: [2013-07-31 水 11:33]--[2013-07-31 水 11:54] => 0:21
15
+ CLOCK: [2013-07-31 水 11:31]--[2013-07-31 水 11:33] => 0:02
16
+ CLOCK: [2013-07-31 水 11:27]--[2013-07-31 水 11:28] => 0:01
17
+ CLOCK: [2013-07-31 水 11:26]--[2013-07-31 水 11:27] => 0:01
18
+ CLOCK: [2013-07-31 水 11:21]--[2013-07-31 水 11:25] => 0:04
19
+ CLOCK: [2013-07-31 水 11:06]--[2013-07-31 水 11:07] => 0:01
20
+ :END:
21
+ :PROPERTIES:
22
+ :ARCHIVE_TIME: 2013-09-05 木 11:02
23
+ :ARCHIVE_FILE: ~/Dropbox/org/pio.org
24
+ :ARCHIVE_OLPATH: Research and Development/pio の開発
25
+ :ARCHIVE_CATEGORY: pio
26
+ :ARCHIVE_TODO: DONE
27
+ :ARCHIVE_ITAGS: pio
28
+ :END:
29
+ [2013-07-31 水 11:06]
30
+ ** DONE 名前を決める
31
+ CLOSED: [2013-07-31 水 11:20] SCHEDULED: <2013-07-31 水>
32
+ :LOGBOOK:
33
+ CLOCK: [2013-07-31 水 11:09]--[2013-07-31 水 11:20] => 0:11
34
+ :END:
35
+ [2013-07-31 水 11:07]
36
+ ** DONE pio リポジトリを作る
37
+ CLOSED: [2013-07-31 水 11:23] SCHEDULED: <2013-07-31 水>
38
+ :LOGBOOK:
39
+ CLOCK: [2013-07-31 水 11:20]--[2013-07-31 水 11:21] => 0:01
40
+ :END:
41
+ [2013-07-31 水 11:20]
42
+ ** DONE Guard 対応にする
43
+ CLOSED: [2013-07-31 水 11:30] SCHEDULED: <2013-07-31 水>
44
+ :LOGBOOK:
45
+ CLOCK: [2013-07-31 水 11:28]--[2013-07-31 水 11:30] => 0:02
46
+ :END:
47
+ [2013-07-31 水 11:27]
48
+ ** DONE Gemfile を作る
49
+ CLOSED: [2013-07-31 水 11:32] SCHEDULED: <2013-07-31 水>
50
+ :LOGBOOK:
51
+ CLOCK: [2013-07-31 水 11:30]--[2013-07-31 水 11:31] => 0:01
52
+ :END:
53
+ [2013-07-31 水 11:30]
54
+ ** DONE paper-house/lib, spec 以下の bindata 関連を pio にコピー
55
+ CLOSED: [2013-07-31 水 11:54] SCHEDULED: <2013-07-31 水>
56
+ [2013-07-31 水 11:33]
57
+ ** DONE 各モジュールを Pio:: とか Lldp:: とかに移動
58
+ CLOSED: [2013-07-31 水 14:09] SCHEDULED: <2013-07-31 水>
59
+ :LOGBOOK:
60
+ CLOCK: [2013-07-31 水 12:11]--[2013-07-31 水 12:14] => 0:03
61
+ CLOCK: [2013-07-31 水 11:54]--[2013-07-31 水 11:55] => 0:01
62
+ :END:
63
+ [2013-07-31 水 11:54]
64
+ ** DONE reek タスクを追加
65
+ CLOSED: [2013-07-31 水 14:14] SCHEDULED: <2013-07-31 水>
66
+ :LOGBOOK:
67
+ CLOCK: [2013-07-31 水 14:09]--[2013-07-31 水 14:14] => 0:05
68
+ :END:
69
+ [2013-07-31 水 14:09]
70
+ ** DONE reek の警告をつぶす
71
+ CLOSED: [2013-07-31 水 14:53] SCHEDULED: <2013-07-31 水>
72
+ - State "NEXT" from "HOLD" [2013-07-31 水 14:36]
73
+ - State "HOLD" from "NEXT" [2013-07-31 水 14:21] \\
74
+ ちょっと iOS のアップデートやる。
75
+ [2013-07-31 水 14:14]
76
+ ** DONE flog タスクを追加
77
+ CLOSED: [2013-07-31 水 14:58] SCHEDULED: <2013-07-31 水>
78
+ :LOGBOOK:
79
+ CLOCK: [2013-07-31 水 14:53]--[2013-07-31 水 14:54] => 0:01
80
+ :END:
81
+ [2013-07-31 水 14:53]
82
+ ** DONE flog の警告をつぶす
83
+ CLOSED: [2013-07-31 水 15:09] SCHEDULED: <2013-07-31 水>
84
+ :LOGBOOK:
85
+ CLOCK: [2013-07-31 水 14:58]--[2013-07-31 水 14:59] => 0:01
86
+ :END:
87
+ [2013-07-31 水 14:58]
88
+ ** DONE flay タスクを追加
89
+ CLOSED: [2013-07-31 水 15:22] SCHEDULED: <2013-07-31 水>
90
+ :LOGBOOK:
91
+ CLOCK: [2013-07-31 水 15:17]--[2013-07-31 水 15:22] => 0:05
92
+ :END:
93
+ [2013-07-31 水 15:17]
94
+
95
+ * DONE gem の最低限の仕上げ
96
+ CLOSED: [2013-08-02 金 17:17]
97
+ :LOGBOOK:
98
+ CLOCK: [2013-08-02 金 11:35]--[2013-08-02 金 11:43] => 0:08
99
+ CLOCK: [2013-08-02 金 11:30]--[2013-08-02 金 11:35] => 0:05
100
+ CLOCK: [2013-08-02 金 10:55]--[2013-08-02 金 10:57] => 0:02
101
+ :END:
102
+ :PROPERTIES:
103
+ :ARCHIVE_TIME: 2013-09-05 木 11:02
104
+ :ARCHIVE_FILE: ~/Dropbox/org/pio.org
105
+ :ARCHIVE_OLPATH: Research and Development/pio の開発
106
+ :ARCHIVE_CATEGORY: pio
107
+ :ARCHIVE_TODO: DONE
108
+ :ARCHIVE_ITAGS: pio
109
+ :END:
110
+ [2013-08-02 金 10:36]
111
+ ** DONE reek とか roodi とかそのへんやってくれる quality タスク
112
+ CLOSED: [2013-08-02 金 10:55] SCHEDULED: <2013-08-02 金>
113
+ [2013-07-31 水 11:26]
114
+ ** DONE README.md をアップデート
115
+ CLOSED: [2013-08-02 金 17:15] SCHEDULED: <2013-08-02 金>
116
+ :LOGBOOK:
117
+ CLOCK: [2013-08-02 金 16:50]--[2013-08-02 金 16:51] => 0:01
118
+ CLOCK: [2013-08-02 金 15:25]--[2013-08-02 金 16:50] => 1:25
119
+ CLOCK: [2013-08-02 金 15:12]--[2013-08-02 金 15:25] => 0:13
120
+ CLOCK: [2013-08-02 金 14:27]--[2013-08-02 金 14:48] => 0:21
121
+ CLOCK: [2013-08-02 金 14:25]--[2013-08-02 金 14:27] => 0:02
122
+ CLOCK: [2013-08-02 金 14:11]--[2013-08-02 金 14:13] => 0:02
123
+ CLOCK: [2013-08-02 金 12:12]--[2013-08-02 金 14:11] => 1:59
124
+ CLOCK: [2013-08-02 金 12:05]--[2013-08-02 金 12:06] => 0:01
125
+ :END:
126
+ [2013-08-02 金 10:38]
127
+ *** DONE Code Climate のパッジを付ける
128
+ CLOSED: [2013-08-02 金 11:32] SCHEDULED: <2013-08-02 金>
129
+ :LOGBOOK:
130
+ CLOCK: [2013-08-02 金 11:29]--[2013-08-02 金 11:30] => 0:01
131
+ :END:
132
+ [2013-08-02 金 11:29]
133
+ *** DONE Travis のバッジを付ける
134
+ CLOSED: [2013-08-02 金 11:43] SCHEDULED: <2013-08-02 金>
135
+ [2013-08-02 金 11:35]
136
+ *** DONE Gem Version のバッジを付ける
137
+ CLOSED: [2013-08-02 金 11:45] SCHEDULED: <2013-08-02 金>
138
+ :LOGBOOK:
139
+ CLOCK: [2013-08-02 金 11:43]--[2013-08-02 金 11:45] => 0:02
140
+ :END:
141
+ [2013-08-02 金 11:43]
142
+ *** DONE Coveralls のバッジを付ける
143
+ CLOSED: [2013-08-02 金 12:05] SCHEDULED: <2013-08-02 金>
144
+ :LOGBOOK:
145
+ CLOCK: [2013-08-02 金 11:45]--[2013-08-02 金 12:05] => 0:20
146
+ :END:
147
+ [2013-08-02 金 11:45]
148
+ *** DONE Gemnasium のバッジを付ける
149
+ CLOSED: [2013-08-02 金 12:12] SCHEDULED: <2013-08-02 金>
150
+ :LOGBOOK:
151
+ CLOCK: [2013-08-02 金 12:06]--[2013-08-02 金 12:12] => 0:06
152
+ :END:
153
+ [2013-08-02 金 12:05]
154
+ *** DONE 簡単なサブセクションを埋める [6/6]
155
+ CLOSED: [2013-08-02 金 14:25] SCHEDULED: <2013-08-02 金>
156
+ :LOGBOOK:
157
+ CLOCK: [2013-08-02 金 14:13]--[2013-08-02 金 14:25] => 0:12
158
+ :END:
159
+ [2013-08-02 金 14:11]
160
+
161
+ - [X] Installation
162
+ - [X] Documents
163
+ - [X] Author
164
+ - [X] Contributors
165
+ - [X] Alternatives
166
+ - [X] License
167
+
168
+ *** DONE Example を追加
169
+ CLOSED: [2013-08-02 金 15:25] SCHEDULED: <2013-08-02 金>
170
+ [2013-08-02 金 14:27]
171
+ *** DONE Features Overview を追加
172
+ CLOSED: [2013-08-02 金 15:39] SCHEDULED: <2013-08-02 金>
173
+ [2013-08-02 金 15:25]
174
+ ** DONE portability タスクを追加
175
+ CLOSED: [2013-08-02 金 11:29] SCHEDULED: <2013-08-02 金>
176
+ :LOGBOOK:
177
+ CLOCK: [2013-08-02 金 10:57]--[2013-08-02 金 11:29] => 0:32
178
+ :END:
179
+ [2013-08-02 金 10:57]
180
+
181
+ * CANCELED 0.2.0 リリース
182
+ CLOSED: [2013-09-05 木 11:06]
183
+ - State "CANCELED" from "TODO" [2013-09-05 木 11:06] \\
184
+ タスク階層を整理したので消す
185
+ :PROPERTIES:
186
+ :ID: 54B2B522-5469-446C-9A56-2AD48E3CCCD9
187
+ :ARCHIVE_TIME: 2013-09-05 木 11:06
188
+ :ARCHIVE_FILE: ~/Dropbox/org/pio.org
189
+ :ARCHIVE_OLPATH: Research and Development/pio の開発
190
+ :ARCHIVE_CATEGORY: pio
191
+ :ARCHIVE_TODO: CANCELED
192
+ :ARCHIVE_ITAGS: pio
193
+ :END:
194
+ [2013-08-02 金 17:16]
195
+
196
+ * CANCELED pio の開発 :pio:
197
+ CLOSED: [2013-09-05 木 11:06]
198
+ - State "CANCELED" from "TODO" [2013-09-05 木 11:06] \\
199
+ タスク階層を整理したので消す。
200
+ :PROPERTIES:
201
+ :ID: 68CB07BC-306C-47B9-B54F-D099C24DB772
202
+ :ARCHIVE_TIME: 2013-09-05 木 11:06
203
+ :ARCHIVE_FILE: ~/Dropbox/org/pio.org
204
+ :ARCHIVE_OLPATH: Research and Development
205
+ :ARCHIVE_CATEGORY: pio
206
+ :ARCHIVE_TODO: CANCELED
207
+ :END:
208
+ [2013-08-02 金 10:35]
209
+
210
+ * DONE 0.1.1 リリース
211
+ CLOSED: [2013-09-05 木 11:48]
212
+ :LOGBOOK:
213
+ CLOCK: [2013-09-05 木 11:38]--[2013-09-05 木 11:39] => 0:01
214
+ CLOCK: [2013-09-05 木 11:37]--[2013-09-05 木 11:38] => 0:01
215
+ :END:
216
+ :PROPERTIES:
217
+ :ARCHIVE_TIME: 2013-09-18 水 12:01
218
+ :ARCHIVE_FILE: ~/Dropbox/org/pio.org
219
+ :ARCHIVE_OLPATH: Research and Development
220
+ :ARCHIVE_CATEGORY: pio
221
+ :ARCHIVE_TODO: DONE
222
+ :ARCHIVE_ITAGS: PIO
223
+ :END:
224
+ [2013-09-05 木 11:12]
225
+ ** DONE 古い gem 依存関係を直す
226
+ CLOSED: [2013-09-05 木 11:37] SCHEDULED: <2013-09-05 木>
227
+ :LOGBOOK:
228
+ CLOCK: [2013-09-05 木 11:16]--[2013-09-05 木 11:37] => 0:21
229
+ :END:
230
+ [2013-09-05 木 11:11]
231
+ ** DONE リリース作業
232
+ CLOSED: [2013-09-05 木 11:48] SCHEDULED: <2013-09-05 木>
233
+ :LOGBOOK:
234
+ CLOCK: [2013-09-05 木 11:40]--[2013-09-05 木 11:48] => 0:08
235
+ CLOCK: [2013-09-05 木 11:39]--[2013-09-05 木 11:40] => 0:01
236
+ :END:
237
+ [2013-09-05 木 11:39]
238
+
239
+ - git flow でリリース
240
+ - gem を作ってアップロード
241
+
242
+ * フレームとパケットの違い
243
+ :LOGBOOK:
244
+ CLOCK: [2013-09-06 金 20:30]--[2013-09-06 金 20:31] => 0:01
245
+ :END:
246
+ :PROPERTIES:
247
+ :ARCHIVE_TIME: 2013-09-18 水 15:47
248
+ :ARCHIVE_FILE: ~/play/shunpio/pio.org
249
+ :ARCHIVE_OLPATH: Notes
250
+ :ARCHIVE_CATEGORY: pio
251
+ :ARCHIVE_ITAGS: PIO
252
+ :END:
253
+ [2013-09-06 金 20:30]
254
+
255
+ フレームは、Ethernet ヘッダからユーザデータ (L3-L7) までを含むデータを
256
+ さし、パケットは IP ヘッダ以降の L3-L7 までのデータをさす。
257
+ その意味で LLDP はフレーム。
258
+
259
+ ARPそのものは、L3レイヤで動作するのでパケットになるが、ルータから出たと
260
+ きは、EthernetFrame でカプセル化されるので、フレームになる
261
+
262
+ (近藤さん解説)
263
+
264
+ * DONE Pio の TODO を近藤さんと共有
265
+ CLOSED: [2013-09-06 金 20:45]
266
+ :LOGBOOK:
267
+ CLOCK: [2013-09-06 金 19:22]--[2013-09-06 金 19:23] => 0:01
268
+ :END:
269
+ :PROPERTIES:
270
+ :ARCHIVE_TIME: 2013-09-19 木 14:02
271
+ :ARCHIVE_FILE: ~/play/pio/pio.org
272
+ :ARCHIVE_OLPATH: Tasks
273
+ :ARCHIVE_CATEGORY: pio
274
+ :ARCHIVE_TODO: DONE
275
+ :ARCHIVE_ITAGS: PIO
276
+ :END:
277
+ [2013-09-06 金 19:22]
278
+ そのまま GitHu にコミットしてしまう。
279
+
280
+ * DONE Guard の Emacs 通知が動くか試す
281
+ CLOSED: [2013-09-17 火 10:20] SCHEDULED: <2013-09-17 火>
282
+ :LOGBOOK:
283
+ CLOCK: [2013-09-17 火 09:59]--[2013-09-17 火 10:00] => 0:01
284
+ :END:
285
+ :PROPERTIES:
286
+ :ARCHIVE_TIME: 2013-09-19 木 14:02
287
+ :ARCHIVE_FILE: ~/play/pio/pio.org
288
+ :ARCHIVE_OLPATH: Tasks
289
+ :ARCHIVE_CATEGORY: pio
290
+ :ARCHIVE_TODO: DONE
291
+ :ARCHIVE_ITAGS: PIO
292
+ :END:
293
+ [2013-09-17 火 09:59]
294
+
295
+ やっぱちゃんと動かない。深追いするのはとりあえずやめて、通知は tmux と
296
+ terminal_notifier だけにしとく。
297
+
298
+ * DONE ペアプロ環境を作る
299
+ CLOSED: [2013-09-05 木 17:16]
300
+ :LOGBOOK:
301
+ CLOCK: [2013-09-05 木 12:00]--[2013-09-05 木 12:16] => 0:16
302
+ :END:
303
+ :PROPERTIES:
304
+ :ARCHIVE_TIME: 2013-09-19 木 14:02
305
+ :ARCHIVE_FILE: ~/play/pio/pio.org
306
+ :ARCHIVE_OLPATH: Tasks
307
+ :ARCHIVE_CATEGORY: pio
308
+ :ARCHIVE_TODO: DONE
309
+ :ARCHIVE_ITAGS: PIO
310
+ :END:
311
+ [2013-09-05 木 11:38]
312
+
313
+ どこかに tmux を使ったペアプロ環境構築法をメモっていたはず。
314
+ ここだ → http://www.zeespencer.com/articles/building-a-remote-pairing-setup/
315
+ ** DONE ペアプロ設定のやりかたをざっと読む
316
+ CLOSED: [2013-09-05 木 12:00] SCHEDULED: <2013-09-05 木>
317
+ :LOGBOOK:
318
+ CLOCK: [2013-09-05 木 11:52]--[2013-09-05 木 12:00] => 0:08
319
+ :END:
320
+ [2013-09-05 木 11:51]
321
+
322
+ * DONE チャット履歴から TODO 追加もれがないか確認
323
+ CLOSED: [2013-09-06 金 20:41] SCHEDULED: <2013-09-06 金>
324
+ :LOGBOOK:
325
+ CLOCK: [2013-09-06 金 20:39]--[2013-09-06 金 20:41] => 0:02
326
+ CLOCK: [2013-09-06 金 20:31]--[2013-09-06 金 20:38] => 0:07
327
+ CLOCK: [2013-09-06 金 20:28]--[2013-09-06 金 20:30] => 0:02
328
+ :END:
329
+ :PROPERTIES:
330
+ :Effort: 0:15
331
+ :ARCHIVE_TIME: 2013-09-19 木 14:02
332
+ :ARCHIVE_FILE: ~/play/pio/pio.org
333
+ :ARCHIVE_OLPATH: Tasks
334
+ :ARCHIVE_CATEGORY: pio
335
+ :ARCHIVE_TODO: DONE
336
+ :ARCHIVE_ITAGS: PIO
337
+ :END:
338
+ [2013-09-06 金 19:24]
339
+
340
+ * DONE 近藤さんとペアプロ
341
+ CLOSED: [2013-09-06 金 16:50] SCHEDULED: <2013-09-06 金 13:30-17:00>
342
+ :PROPERTIES:
343
+ :ARCHIVE_TIME: 2013-09-19 木 14:02
344
+ :ARCHIVE_FILE: ~/play/pio/pio.org
345
+ :ARCHIVE_OLPATH: Special Dates
346
+ :ARCHIVE_CATEGORY: pio
347
+ :ARCHIVE_TODO: DONE
348
+ :ARCHIVE_ITAGS: PIO
349
+ :END:
350
+ [2013-09-06 金 12:14]
351
+
352
+ * DONE 近藤さんとペアプロ
353
+ CLOSED: [2013-09-06 金 13:14] SCHEDULED: <2013-09-06 金 11:00-12:00>
354
+ :PROPERTIES:
355
+ :ARCHIVE_TIME: 2013-09-19 木 14:02
356
+ :ARCHIVE_FILE: ~/play/pio/pio.org
357
+ :ARCHIVE_OLPATH: Special Dates
358
+ :ARCHIVE_CATEGORY: pio
359
+ :ARCHIVE_TODO: DONE
360
+ :ARCHIVE_ITAGS: PIO
361
+ :END:
362
+ [2013-09-06 金 10:32]
363
+
364
+ * DONE 近藤さんとペアプロ
365
+ CLOSED: [2013-09-09 月 17:23] SCHEDULED: <2013-09-09 月 13:30-17:00>
366
+ :LOGBOOK:
367
+ CLOCK: [2013-09-09 月 17:13]--[2013-09-09 月 17:23] => 0:10
368
+ CLOCK: [2013-09-09 月 17:10]--[2013-09-09 月 17:13] => 0:03
369
+ CLOCK: [2013-09-09 月 15:58]--[2013-09-09 月 17:10] => 1:12
370
+ CLOCK: [2013-09-09 月 15:53]--[2013-09-09 月 15:58] => 0:05
371
+ CLOCK: [2013-09-09 月 15:26]--[2013-09-09 月 15:53] => 0:27
372
+ CLOCK: [2013-09-09 月 15:23]--[2013-09-09 月 15:26] => 0:03
373
+ CLOCK: [2013-09-09 月 14:27]--[2013-09-09 月 15:23] => 0:56
374
+ CLOCK: [2013-09-09 月 14:25]--[2013-09-09 月 14:27] => 0:02
375
+ CLOCK: [2013-09-09 月 14:19]--[2013-09-09 月 14:25] => 0:06
376
+ CLOCK: [2013-09-09 月 14:03]--[2013-09-09 月 14:19] => 0:16
377
+ CLOCK: [2013-09-09 月 13:54]--[2013-09-09 月 14:02] => 0:08
378
+ CLOCK: [2013-09-09 月 13:40]--[2013-09-09 月 13:54] => 0:14
379
+ CLOCK: [2013-09-09 月 10:22]--[2013-09-09 月 10:23] => 0:01
380
+ :END:
381
+ :PROPERTIES:
382
+ :ARCHIVE_TIME: 2013-09-19 木 14:02
383
+ :ARCHIVE_FILE: ~/play/pio/pio.org
384
+ :ARCHIVE_OLPATH: Special Dates
385
+ :ARCHIVE_CATEGORY: pio
386
+ :ARCHIVE_TODO: DONE
387
+ :ARCHIVE_ITAGS: PIO
388
+ :END:
389
+ [2013-09-09 月 10:22]
@@ -0,0 +1,150 @@
1
+ require File.join( File.dirname( __FILE__ ), "..", "..", "spec_helper" )
2
+ require "pio/arp/reply"
3
+
4
+
5
+ module Pio
6
+ class Arp
7
+ describe Reply do
8
+ context ".new" do
9
+ subject {
10
+ Arp::Reply.new(
11
+ :source_mac => source_mac,
12
+ :destination_mac => destination_mac,
13
+ :sender_protocol_address => sender_protocol_address,
14
+ :target_protocol_address => target_protocol_address
15
+ )
16
+ }
17
+
18
+ let( :arp_reply_dump ) {
19
+ [
20
+ 0x00, 0x26, 0x82, 0xeb, 0xea, 0xd1, # destination mac address
21
+ 0x00, 0x16, 0x9d, 0x1d, 0x9c, 0xc4, # source mac address
22
+ 0x08, 0x06, # ethernet type
23
+ 0x00, 0x01, # arp hardware type
24
+ 0x08, 0x00, # arp protocol type
25
+ 0x06, # hardware address size
26
+ 0x04, # protocol address size
27
+ 0x00, 0x02, # operational code
28
+ 0x00, 0x16, 0x9d, 0x1d, 0x9c, 0xc4, # sender hardware address
29
+ 0xc0, 0xa8, 0x53, 0xfe, # sender protocol address
30
+ 0x00, 0x26, 0x82, 0xeb, 0xea, 0xd1, # target hardware address
31
+ 0xc0, 0xa8, 0x53, 0x03, # target protocol address
32
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, # padding
33
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
35
+ 0x00, 0x00, 0x00, 0x00,
36
+ ].pack( "C*" )
37
+ }
38
+
39
+
40
+ context "with Integer MAC and IP address" do
41
+ let( :source_mac ) { 0x00169d1d9cc4 }
42
+ let( :destination_mac ) { 0x002682ebead1 }
43
+ let( :sender_protocol_address ) { 0xc0a853fe }
44
+ let( :target_protocol_address ) { 0xc0a85303 }
45
+
46
+ context "#to_binary" do
47
+ it "returns an Arp Reply binary String" do
48
+ expect( subject.to_binary ).to eq arp_reply_dump
49
+ end
50
+
51
+ it "returns a valid ether frame with size = 64" do
52
+ expect( subject.to_binary.size ).to eq 64
53
+ end
54
+ end
55
+ end
56
+
57
+
58
+ context "with String MAC and Integer IP address" do
59
+ let( :source_mac ) { "00:16:9d:1d:9c:c4" }
60
+ let( :destination_mac ) { "00:26:82:eb:ea:d1" }
61
+ let( :sender_protocol_address ) { 0xc0a853fe }
62
+ let( :target_protocol_address ) { 0xc0a85303 }
63
+
64
+ context "#to_binary" do
65
+ it "returns an Arp Reply binary String" do
66
+ expect( subject.to_binary ).to eq arp_reply_dump
67
+ end
68
+
69
+ it "returns a valid ether frame with size = 64" do
70
+ expect( subject.to_binary.size ).to eq 64
71
+ end
72
+ end
73
+ end
74
+
75
+
76
+ context "when Integer MAC and String IP address" do
77
+ let( :source_mac ) { 0x00169d1d9cc4 }
78
+ let( :destination_mac ) { 0x002682ebead1 }
79
+ let( :sender_protocol_address ) { "192.168.83.254" }
80
+ let( :target_protocol_address ) { "192.168.83.3" }
81
+
82
+ context "#to_binary" do
83
+ it "returns an Arp Reply binary String" do
84
+ expect( subject.to_binary ).to eq arp_reply_dump
85
+ end
86
+
87
+ it "returns a valid ether frame with size = 64" do
88
+ expect( subject.to_binary.size ).to eq 64
89
+ end
90
+ end
91
+ end
92
+
93
+
94
+ context "when :source_mac is not set" do
95
+ let( :source_mac ) { nil }
96
+ let( :destination_mac ) { 0x002682ebead1 }
97
+ let( :sender_protocol_address ) { "192.168.83.3" }
98
+ let( :target_protocol_address ) { "192.168.83.254" }
99
+
100
+ it "raises an invalid MAC address error" do
101
+ expect { subject }.to raise_error( "Invalid MAC address: nil" )
102
+ end
103
+ end
104
+
105
+
106
+ context "when :destination_mac is not set" do
107
+ let( :source_mac ) { 0x00169d1d9cc4 }
108
+ let( :destination_mac ) { nil }
109
+ let( :sender_protocol_address ) { "192.168.83.3" }
110
+ let( :target_protocol_address ) { "192.168.83.254" }
111
+
112
+ it "raises an invalid MAC address error" do
113
+ expect { subject }.to raise_error( "Invalid MAC address: nil" )
114
+ end
115
+ end
116
+
117
+
118
+ context "when :sender_protocol_address is not set" do
119
+ let( :source_mac ) { 0x00169d1d9cc4 }
120
+ let( :destination_mac ) { 0x002682ebead1 }
121
+ let( :sender_protocol_address ) { nil }
122
+ let( :target_protocol_address ) { "192.168.83.254" }
123
+
124
+ it "raises an invalid IP address error" do
125
+ expect { subject }.to raise_error( "Invalid IP address: nil" )
126
+ end
127
+ end
128
+
129
+
130
+ context "when :target_protocol_address is not set" do
131
+ let( :source_mac ) { 0x00169d1d9cc4 }
132
+ let( :destination_mac ) { 0x002682ebead1 }
133
+ let( :sender_protocol_address ) { "192.168.83.3" }
134
+ let( :target_protocol_address ) { nil }
135
+
136
+ it "raises an invalid IP address error" do
137
+ expect { subject }.to raise_error( "Invalid IP address: nil" )
138
+ end
139
+ end
140
+ end
141
+ end
142
+ end
143
+ end
144
+
145
+
146
+ ### Local variables:
147
+ ### mode: Ruby
148
+ ### coding: utf-8-unix
149
+ ### indent-tabs-mode: nil
150
+ ### End: