Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1606)

Side by Side Diff: third_party/protobuf/src/google/protobuf/io/zero_copy_stream_unittest.cc

Issue 1322483002: Revert https://codereview.chromium.org/1291903002 (protobuf roll). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Protocol Buffers - Google's data interchange format 1 // Protocol Buffers - Google's data interchange format
2 // Copyright 2008 Google Inc. All rights reserved. 2 // Copyright 2008 Google Inc. All rights reserved.
3 // https://developers.google.com/protocol-buffers/ 3 // http://code.google.com/p/protobuf/
4 // 4 //
5 // Redistribution and use in source and binary forms, with or without 5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are 6 // modification, are permitted provided that the following conditions are
7 // met: 7 // met:
8 // 8 //
9 // * Redistributions of source code must retain the above copyright 9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer. 10 // notice, this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above 11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer 12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the 13 // in the documentation and/or other materials provided with the
(...skipping 25 matching lines...) Expand all
39 // of varying sizes, with a BackUp() after each chunk. It is read back 39 // of varying sizes, with a BackUp() after each chunk. It is read back
40 // similarly, but with chunks separated at different points. The whole 40 // similarly, but with chunks separated at different points. The whole
41 // process is run with a variety of block sizes for both the input and 41 // process is run with a variety of block sizes for both the input and
42 // the output. 42 // the output.
43 // 43 //
44 // TODO(kenton): Rewrite this test to bring it up to the standards of all 44 // TODO(kenton): Rewrite this test to bring it up to the standards of all
45 // the other proto2 tests. May want to wait for gTest to implement 45 // the other proto2 tests. May want to wait for gTest to implement
46 // "parametized tests" so that one set of tests can be used on all the 46 // "parametized tests" so that one set of tests can be used on all the
47 // implementations. 47 // implementations.
48 48
49 #include "config.h"
50
49 #ifdef _MSC_VER 51 #ifdef _MSC_VER
50 #include <io.h> 52 #include <io.h>
51 #else 53 #else
52 #include <unistd.h> 54 #include <unistd.h>
53 #endif 55 #endif
54 #include <stdlib.h> 56 #include <stdlib.h>
55 #include <sys/types.h> 57 #include <sys/types.h>
56 #include <sys/stat.h> 58 #include <sys/stat.h>
57 #include <fcntl.h> 59 #include <fcntl.h>
58 #include <errno.h> 60 #include <errno.h>
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 result.append(reinterpret_cast<const char*>(buffer), size); 553 result.append(reinterpret_cast<const char*>(buffer), size);
552 } 554 }
553 } 555 }
554 return result; 556 return result;
555 } 557 }
556 558
557 TEST_F(IoTest, CompressionOptions) { 559 TEST_F(IoTest, CompressionOptions) {
558 // Some ad-hoc testing of compression options. 560 // Some ad-hoc testing of compression options.
559 561
560 string golden; 562 string golden;
561 GOOGLE_CHECK_OK(File::GetContents( 563 File::ReadFileToStringOrDie(
562 TestSourceDir() + 564 TestSourceDir() + "/google/protobuf/testdata/golden_message",
563 "/google/protobuf/testdata/golden_message", 565 &golden);
564 &golden, true));
565 566
566 GzipOutputStream::Options options; 567 GzipOutputStream::Options options;
567 string gzip_compressed = Compress(golden, options); 568 string gzip_compressed = Compress(golden, options);
568 569
569 options.compression_level = 0; 570 options.compression_level = 0;
570 string not_compressed = Compress(golden, options); 571 string not_compressed = Compress(golden, options);
571 572
572 // Try zlib compression for fun. 573 // Try zlib compression for fun.
573 options = GzipOutputStream::Options(); 574 options = GzipOutputStream::Options();
574 options.format = GzipOutputStream::ZLIB; 575 options.format = GzipOutputStream::ZLIB;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 648
648 delete coded_input; 649 delete coded_input;
649 delete gzin; 650 delete gzin;
650 delete input; 651 delete input;
651 } 652 }
652 } 653 }
653 654
654 delete [] temp_buffer; 655 delete [] temp_buffer;
655 delete [] buffer; 656 delete [] buffer;
656 } 657 }
657
658 TEST_F(IoTest, GzipInputByteCountAfterClosed) {
659 string golden = "abcdefghijklmnopqrstuvwxyz";
660 string compressed = Compress(golden, GzipOutputStream::Options());
661
662 for (int i = 0; i < kBlockSizeCount; i++) {
663 ArrayInputStream arr_input(compressed.data(), compressed.size(),
664 kBlockSizes[i]);
665 GzipInputStream gz_input(&arr_input);
666 const void* buffer;
667 int size;
668 while (gz_input.Next(&buffer, &size)) {
669 EXPECT_LE(gz_input.ByteCount(), golden.size());
670 }
671 EXPECT_EQ(golden.size(), gz_input.ByteCount());
672 }
673 }
674
675 TEST_F(IoTest, GzipInputByteCountAfterClosedConcatenatedStreams) {
676 string golden1 = "abcdefghijklmnopqrstuvwxyz";
677 string golden2 = "the quick brown fox jumps over the lazy dog";
678 const size_t total_size = golden1.size() + golden2.size();
679 string compressed = Compress(golden1, GzipOutputStream::Options()) +
680 Compress(golden2, GzipOutputStream::Options());
681
682 for (int i = 0; i < kBlockSizeCount; i++) {
683 ArrayInputStream arr_input(compressed.data(), compressed.size(),
684 kBlockSizes[i]);
685 GzipInputStream gz_input(&arr_input);
686 const void* buffer;
687 int size;
688 while (gz_input.Next(&buffer, &size)) {
689 EXPECT_LE(gz_input.ByteCount(), total_size);
690 }
691 EXPECT_EQ(total_size, gz_input.ByteCount());
692 }
693 }
694 #endif 658 #endif
695 659
696 // There is no string input, only string output. Also, it doesn't support 660 // There is no string input, only string output. Also, it doesn't support
697 // explicit block sizes. So, we'll only run one test and we'll use 661 // explicit block sizes. So, we'll only run one test and we'll use
698 // ArrayInput to read back the results. 662 // ArrayInput to read back the results.
699 TEST_F(IoTest, StringIo) { 663 TEST_F(IoTest, StringIo) {
700 string str; 664 string str;
701 { 665 {
702 StringOutputStream output(&str); 666 StringOutputStream output(&str);
703 WriteStuff(&output); 667 WriteStuff(&output);
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
952 ArrayOutputStream output(buffer, kBufferSize); 916 ArrayOutputStream output(buffer, kBufferSize);
953 WriteStuff(&output); 917 WriteStuff(&output);
954 918
955 // Set up input. 919 // Set up input.
956 ArrayInputStream array_input(buffer, kBufferSize); 920 ArrayInputStream array_input(buffer, kBufferSize);
957 LimitingInputStream input(&array_input, output.ByteCount()); 921 LimitingInputStream input(&array_input, output.ByteCount());
958 922
959 ReadStuff(&input); 923 ReadStuff(&input);
960 } 924 }
961 925
962 // Checks that ByteCount works correctly for LimitingInputStreams where the
963 // underlying stream has already been read.
964 TEST_F(IoTest, LimitingInputStreamByteCount) {
965 const int kHalfBufferSize = 128;
966 const int kBufferSize = kHalfBufferSize * 2;
967 uint8 buffer[kBufferSize];
968
969 // Set up input. Only allow half to be read at once.
970 ArrayInputStream array_input(buffer, kBufferSize, kHalfBufferSize);
971 const void* data;
972 int size;
973 EXPECT_TRUE(array_input.Next(&data, &size));
974 EXPECT_EQ(kHalfBufferSize, array_input.ByteCount());
975 // kHalfBufferSize - 1 to test limiting logic as well.
976 LimitingInputStream input(&array_input, kHalfBufferSize - 1);
977 EXPECT_EQ(0, input.ByteCount());
978 EXPECT_TRUE(input.Next(&data, &size));
979 EXPECT_EQ(kHalfBufferSize - 1 , input.ByteCount());
980 }
981
982 // Check that a zero-size array doesn't confuse the code. 926 // Check that a zero-size array doesn't confuse the code.
983 TEST(ZeroSizeArray, Input) { 927 TEST(ZeroSizeArray, Input) {
984 ArrayInputStream input(NULL, 0); 928 ArrayInputStream input(NULL, 0);
985 const void* data; 929 const void* data;
986 int size; 930 int size;
987 EXPECT_FALSE(input.Next(&data, &size)); 931 EXPECT_FALSE(input.Next(&data, &size));
988 } 932 }
989 933
990 TEST(ZeroSizeArray, Output) { 934 TEST(ZeroSizeArray, Output) {
991 ArrayOutputStream output(NULL, 0); 935 ArrayOutputStream output(NULL, 0);
992 void* data; 936 void* data;
993 int size; 937 int size;
994 EXPECT_FALSE(output.Next(&data, &size)); 938 EXPECT_FALSE(output.Next(&data, &size));
995 } 939 }
996 940
997 } // namespace 941 } // namespace
998 } // namespace io 942 } // namespace io
999 } // namespace protobuf 943 } // namespace protobuf
1000 } // namespace google 944 } // namespace google
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698