1c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu//
2c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Copyright (C) 2011 The Android Open Source Project
3c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu//
4c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Licensed under the Apache License, Version 2.0 (the "License");
5c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// you may not use this file except in compliance with the License.
6c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// You may obtain a copy of the License at
7c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu//
8c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu//      http://www.apache.org/licenses/LICENSE-2.0
9c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu//
10c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// Unless required by applicable law or agreed to in writing, software
11c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// distributed under the License is distributed on an "AS IS" BASIS,
12c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// See the License for the specific language governing permissions and
14c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu// limitations under the License.
15c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu//
16877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov
17cddd2d09878704128d35ddfeec862109b7d7fdc9Alex Deymo#include "shill/crypto_rot47.h"
18cddd2d09878704128d35ddfeec862109b7d7fdc9Alex Deymo
198a5322984f2d81bcbfd8d44c59747a11bd9b904bAlex Vakulenko#include <string>
208a5322984f2d81bcbfd8d44c59747a11bd9b904bAlex Vakulenko
21877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov#include <gtest/gtest.h>
22877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov
23877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkovusing std::string;
24877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkovusing testing::Test;
25877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov
26877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkovnamespace shill {
27877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov
28877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkovnamespace {
29877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkovconst char kEmpty[] = "";
30877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkovconst char kPlainText[] = "~{\"Hello world!\" OPQ ['1234']}";
31877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkovconst char kCipherText[] = "OLQw6==@ H@C=5PQ ~!\" ,V`abcV.N";
328a5322984f2d81bcbfd8d44c59747a11bd9b904bAlex Vakulenko}  // namespace
33877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov
34877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkovclass CryptoROT47Test : public Test {
35877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov protected:
36877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov  CryptoROT47 crypto_;
37877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov};
38877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov
39877642b0c9e2416f69a2f76b26539f30ef98d43cDarin PetkovTEST_F(CryptoROT47Test, GetID) {
40877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov  EXPECT_EQ(CryptoROT47::kID, crypto_.GetID());
41877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov}
42877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov
43877642b0c9e2416f69a2f76b26539f30ef98d43cDarin PetkovTEST_F(CryptoROT47Test, Encrypt) {
44877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov  string text;
45877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov  EXPECT_TRUE(crypto_.Encrypt(kPlainText, &text));
46877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov  EXPECT_EQ(kCipherText, text);
47877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov  EXPECT_TRUE(crypto_.Encrypt(kEmpty, &text));
48877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov  EXPECT_EQ(kEmpty, text);
49877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov}
50877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov
51877642b0c9e2416f69a2f76b26539f30ef98d43cDarin PetkovTEST_F(CryptoROT47Test, Decrypt) {
52877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov  string text;
53877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov  EXPECT_TRUE(crypto_.Decrypt(kCipherText, &text));
54877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov  EXPECT_EQ(kPlainText, text);
55877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov  EXPECT_TRUE(crypto_.Decrypt(kEmpty, &text));
56877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov  EXPECT_EQ(kEmpty, text);
57877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov}
58877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov
59877642b0c9e2416f69a2f76b26539f30ef98d43cDarin Petkov}  // namespace shill
60