Skip to content

Commit c2ca3e8

Browse files
committed
refactor: reorder tests
1 parent bd79223 commit c2ca3e8

File tree

2 files changed

+109
-109
lines changed

2 files changed

+109
-109
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

body-plz/src/reader/chunked_reader.rs

Lines changed: 108 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -190,10 +190,10 @@ impl ChunkReaderState {
190190
String::from_utf8_lossy(&buf.as_ref()[0..buf.position()]).to_string(),
191191
))?;
192192
// 2. Convert hex size to integer.
193-
let size = usize::from_str_radix(&String::from_utf8_lossy(hex_size), 16)?;
193+
let size = u64::from_str_radix(&String::from_utf8_lossy(hex_size), 16)?;
194194
// 3. Add CRLF
195195
buf.set_position(buf.position() + 2);
196-
Ok(size)
196+
Ok(size as usize)
197197
}
198198
}
199199

@@ -310,6 +310,110 @@ pub(crate) mod tests {
310310
assert_eq!(ChunkReaderState::End, state);
311311
}
312312

313+
#[test]
314+
fn test_chunked_reader_read_partial() {
315+
let data = "4\r\n\
316+
Wiki\r\n\
317+
6\r\n\
318+
pedia \r\n\
319+
E\r\n\
320+
in";
321+
let remain = " \r\n\
322+
\r\n\
323+
chunks.\r\n\
324+
0; hola\r\n\
325+
\r\n";
326+
let mut buf = BytesMut::from(data);
327+
let mut cbuf = Cursor::new(&mut buf);
328+
let mut state = ChunkReaderState::ReadSize;
329+
loop {
330+
match state.next(&mut cbuf) {
331+
Some(_) => match state {
332+
ChunkReaderState::LastChunk => break,
333+
_ => continue,
334+
},
335+
None => {
336+
assert_eq!(state, ChunkReaderState::ReadChunk(14));
337+
cbuf.as_mut().put_slice(remain.as_bytes());
338+
continue;
339+
}
340+
}
341+
}
342+
343+
assert_eq!(state, ChunkReaderState::LastChunk);
344+
state = ChunkReaderState::EndCRLF;
345+
state.next(&mut cbuf);
346+
assert_eq!(state, ChunkReaderState::End);
347+
assert_eq!(cbuf.position(), cbuf.len());
348+
}
349+
350+
#[test]
351+
fn test_mark_size_chunk_true() {
352+
let data = "7\r\n";
353+
let mut buf = BytesMut::from(data);
354+
let mut cbuf = Cursor::new(&mut buf);
355+
let result = ChunkReaderState::mark_size_chunk(&mut cbuf);
356+
assert!(result);
357+
assert_eq!(cbuf.position(), 1);
358+
let size = ChunkReaderState::try_get_size(&mut cbuf).unwrap();
359+
assert_eq!(size, 7);
360+
}
361+
362+
#[test]
363+
fn test_mark_size_chunk_true_with_extension() {
364+
let data = "7; hola amigo\r\n";
365+
let mut buf = BytesMut::from(data);
366+
let mut cbuf = Cursor::new(&mut buf);
367+
let result = ChunkReaderState::mark_size_chunk(&mut cbuf);
368+
assert!(result);
369+
assert_eq!(cbuf.position(), data.len() - 2);
370+
let size = ChunkReaderState::try_get_size(&mut cbuf).unwrap();
371+
assert_eq!(size, 7);
372+
}
373+
374+
#[test]
375+
fn test_mark_size_chunk_false() {
376+
let data = "7\r";
377+
let mut buf = BytesMut::from(data);
378+
let mut cbuf = Cursor::new(&mut buf);
379+
let result = ChunkReaderState::mark_size_chunk(&mut cbuf);
380+
assert!(!result);
381+
}
382+
383+
#[test]
384+
fn test_chunked_reader_extra_data() {
385+
let data = "\r\n\
386+
extra data";
387+
let mut buf = BytesMut::from(data);
388+
let mut cbuf = Cursor::new(&mut buf);
389+
let mut state = ChunkReaderState::EndCRLF;
390+
let chunk = state.next(&mut cbuf).unwrap();
391+
assert!(matches!(chunk, ChunkType::EndCRLF(_)));
392+
assert_eq!(state, ChunkReaderState::End);
393+
assert_eq!(cbuf.remaining(), &b"extra data"[..]);
394+
}
395+
396+
#[test]
397+
fn test_chunked_reader_end_crlf_partial() {
398+
let data = "\r";
399+
let mut buf = BytesMut::from(data);
400+
let mut cbuf = Cursor::new(&mut buf);
401+
let mut state = ChunkReaderState::EndCRLF;
402+
let chunk = state.next(&mut cbuf);
403+
assert!(chunk.is_none());
404+
assert_eq!(state, ChunkReaderState::EndCRLF);
405+
}
406+
407+
#[test]
408+
fn test_chunked_reader_ended() {
409+
let data = "\r\n";
410+
let mut buf = BytesMut::from(data);
411+
let mut cbuf = Cursor::new(&mut buf);
412+
let mut state = ChunkReaderState::End;
413+
let chunk = state.next(&mut cbuf);
414+
assert!(chunk.is_none());
415+
}
416+
313417
#[test]
314418
fn test_chunked_reader_read_full() {
315419
let data = "7; hola amigo\r\n\
@@ -444,46 +548,9 @@ pub(crate) mod tests {
444548
}
445549
}
446550

447-
#[test]
448-
fn test_chunked_reader_read_partial() {
449-
let data = "4\r\n\
450-
Wiki\r\n\
451-
6\r\n\
452-
pedia \r\n\
453-
E\r\n\
454-
in";
455-
let remain = " \r\n\
456-
\r\n\
457-
chunks.\r\n\
458-
0; hola\r\n\
459-
\r\n";
460-
let mut buf = BytesMut::from(data);
461-
let mut cbuf = Cursor::new(&mut buf);
462-
let mut state = ChunkReaderState::ReadSize;
463-
loop {
464-
match state.next(&mut cbuf) {
465-
Some(_) => match state {
466-
ChunkReaderState::LastChunk => break,
467-
_ => continue,
468-
},
469-
None => {
470-
assert_eq!(state, ChunkReaderState::ReadChunk(14));
471-
cbuf.as_mut().put_slice(remain.as_bytes());
472-
continue;
473-
}
474-
}
475-
}
476-
477-
assert_eq!(state, ChunkReaderState::LastChunk);
478-
state = ChunkReaderState::EndCRLF;
479-
state.next(&mut cbuf);
480-
assert_eq!(state, ChunkReaderState::End);
481-
assert_eq!(cbuf.position(), cbuf.len());
482-
}
483-
484551
#[test]
485552
fn test_chunked_reader_read_loop() {
486-
let data = "7; hola amigo\r\n\
553+
let input = "7; hola amigo\r\n\
487554
Mozilla\r\n\
488555
9\r\n\
489556
Developer\r\n\
@@ -493,7 +560,7 @@ pub(crate) mod tests {
493560
a: b\r\n\
494561
c: d\r\n\
495562
\r\n";
496-
let mut buf = BytesMut::from(data);
563+
let mut buf = BytesMut::from(input);
497564
let mut cbuf = Cursor::new(&mut buf);
498565
let mut state = ChunkReaderState::ReadSize;
499566
loop {
@@ -511,71 +578,4 @@ pub(crate) mod tests {
511578

512579
assert_eq!(cbuf.remaining().len(), 0);
513580
}
514-
515-
#[test]
516-
fn test_mark_size_chunk_true() {
517-
let data = "7\r\n";
518-
let mut buf = BytesMut::from(data);
519-
let mut cbuf = Cursor::new(&mut buf);
520-
let result = ChunkReaderState::mark_size_chunk(&mut cbuf);
521-
assert!(result);
522-
assert_eq!(cbuf.position(), 1);
523-
let size = ChunkReaderState::try_get_size(&mut cbuf).unwrap();
524-
assert_eq!(size, 7);
525-
}
526-
527-
#[test]
528-
fn test_mark_size_chunk_true_with_extension() {
529-
let data = "7; hola amigo\r\n";
530-
let mut buf = BytesMut::from(data);
531-
let mut cbuf = Cursor::new(&mut buf);
532-
let result = ChunkReaderState::mark_size_chunk(&mut cbuf);
533-
assert!(result);
534-
assert_eq!(cbuf.position(), data.len() - 2);
535-
let size = ChunkReaderState::try_get_size(&mut cbuf).unwrap();
536-
assert_eq!(size, 7);
537-
}
538-
539-
#[test]
540-
fn test_mark_size_chunk_false() {
541-
let data = "7\r";
542-
let mut buf = BytesMut::from(data);
543-
let mut cbuf = Cursor::new(&mut buf);
544-
let result = ChunkReaderState::mark_size_chunk(&mut cbuf);
545-
assert!(!result);
546-
}
547-
548-
#[test]
549-
fn test_chunked_reader_extra_data() {
550-
let data = "\r\n\
551-
extra data";
552-
let mut buf = BytesMut::from(data);
553-
let mut cbuf = Cursor::new(&mut buf);
554-
let mut state = ChunkReaderState::EndCRLF;
555-
let chunk = state.next(&mut cbuf).unwrap();
556-
assert!(matches!(chunk, ChunkType::EndCRLF(_)));
557-
assert_eq!(state, ChunkReaderState::End);
558-
assert_eq!(cbuf.remaining(), &b"extra data"[..]);
559-
}
560-
561-
#[test]
562-
fn test_chunked_reader_end_crlf_partial() {
563-
let data = "\r";
564-
let mut buf = BytesMut::from(data);
565-
let mut cbuf = Cursor::new(&mut buf);
566-
let mut state = ChunkReaderState::EndCRLF;
567-
let chunk = state.next(&mut cbuf);
568-
assert!(chunk.is_none());
569-
assert_eq!(state, ChunkReaderState::EndCRLF);
570-
}
571-
572-
#[test]
573-
fn test_chunked_reader_ended() {
574-
let data = "\r\n";
575-
let mut buf = BytesMut::from(data);
576-
let mut cbuf = Cursor::new(&mut buf);
577-
let mut state = ChunkReaderState::End;
578-
let chunk = state.next(&mut cbuf);
579-
assert!(chunk.is_none());
580-
}
581581
}

0 commit comments

Comments
 (0)