1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "crypto/openssl_bio_string.h"
7 #include <openssl/bio.h>
9 #include "crypto/scoped_openssl_types.h"
10 #include "testing/gtest/include/gtest/gtest.h"
14 TEST(OpenSSLBIOString
, TestWrite
) {
16 const std::string
expected1("a one\nb 2\n");
17 const std::string
expected2("c d e f");
18 const std::string
expected3("g h i");
20 ScopedBIO
bio(BIO_new_string(&s
));
21 ASSERT_TRUE(bio
.get());
23 EXPECT_EQ(static_cast<int>(expected1
.size()),
24 BIO_printf(bio
.get(), "a %s\nb %i\n", "one", 2));
25 EXPECT_EQ(expected1
, s
);
27 EXPECT_EQ(1, BIO_flush(bio
.get()));
28 EXPECT_EQ(expected1
, s
);
30 EXPECT_EQ(static_cast<int>(expected2
.size()),
31 BIO_write(bio
.get(), expected2
.data(), expected2
.size()));
32 EXPECT_EQ(expected1
+ expected2
, s
);
34 EXPECT_EQ(static_cast<int>(expected3
.size()),
35 BIO_puts(bio
.get(), expected3
.c_str()));
36 EXPECT_EQ(expected1
+ expected2
+ expected3
, s
);
38 EXPECT_EQ(expected1
+ expected2
+ expected3
, s
);
41 TEST(OpenSSLBIOString
, TestReset
) {
43 const std::string
expected1("a b c\n");
44 const std::string
expected2("d e f g\n");
46 ScopedBIO
bio(BIO_new_string(&s
));
47 ASSERT_TRUE(bio
.get());
49 EXPECT_EQ(static_cast<int>(expected1
.size()),
50 BIO_write(bio
.get(), expected1
.data(), expected1
.size()));
51 EXPECT_EQ(expected1
, s
);
53 EXPECT_EQ(1, BIO_reset(bio
.get()));
54 EXPECT_EQ(std::string(), s
);
56 EXPECT_EQ(static_cast<int>(expected2
.size()),
57 BIO_write(bio
.get(), expected2
.data(), expected2
.size()));
58 EXPECT_EQ(expected2
, s
);
60 EXPECT_EQ(expected2
, s
);