File: file_attachment_unittest.cc

package info (click to toggle)
chromium 138.0.7204.183-1~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-proposed-updates
  • size: 6,080,960 kB
  • sloc: cpp: 34,937,079; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,954; asm: 946,768; xml: 739,971; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,811; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (82 lines) | stat: -rw-r--r-- 3,257 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/nearby_sharing/file_attachment.h"
#include "chrome/browser/nearby_sharing/share_target.h"

#include "base/files/file_path.h"
#include "testing/gtest/include/gtest/gtest.h"

namespace {
base::FilePath kFilePath = base::FilePath("test.html");

struct FileShareType {
  std::string file_name;
  nearby_share::mojom::ShareType share_type;
} kFileTypes[] = {
  {"test.jpg", nearby_share::mojom::ShareType::kImageFile},
  {"test.mp4", nearby_share::mojom::ShareType::kVideoFile},
  {"test.wav", nearby_share::mojom::ShareType::kAudioFile},
  {"test.pdf", nearby_share::mojom::ShareType::kPdfFile},
  {"test.other", nearby_share::mojom::ShareType::kUnknownFile}
};

struct GoogleAppsFileShareType {
  std::string file_name;
  std::string mime_type;
  nearby_share::mojom::ShareType share_type;
} kGoogleAppsFileTypes[] = {
  {"test.gdoc", "application/vnd.google-apps.document", nearby_share::mojom::ShareType::kGoogleDocsFile},
  {"test.gsheet", "application/vnd.google-apps.spreadsheet", nearby_share::mojom::ShareType::kGoogleSheetsFile},
  {"test.gslides", "application/vnd.google-apps.presentation", nearby_share::mojom::ShareType::kGoogleSlidesFile}
};

}  // namespace

class FileAttachmentShareTypeTest : public testing::TestWithParam<FileShareType> { };

class FileAttachmentGoogleAppsShareTypeTest : public testing::TestWithParam<GoogleAppsFileShareType> { };

TEST(FileAttachmentTest, CreateFileAttachment) {
    FileAttachment attachment = FileAttachment(kFilePath);

    EXPECT_EQ(attachment.size(), 0u);
    EXPECT_EQ(attachment.file_name(), "test.html");
    EXPECT_EQ(attachment.mime_type(), "text/html");
    EXPECT_EQ(attachment.type(), FileAttachment::Type::kUnknown);
    EXPECT_EQ(attachment.file_path(), kFilePath);
    EXPECT_EQ(attachment.GetDescription(), "test.html");
}

TEST(FileAttachmentTest, MoveShareTarget) {
  FileAttachment attachment = FileAttachment(kFilePath);
  ShareTarget target;
  EXPECT_EQ(target.file_attachments.size(), 0u);
  attachment.MoveToShareTarget(target);
  EXPECT_EQ(target.file_attachments.size(), 1u);
}

TEST_P(FileAttachmentShareTypeTest, GetShareType) {
  FileShareType fileTypePair = GetParam();
  FileAttachment attachment = FileAttachment(base::FilePath(fileTypePair.file_name));
  EXPECT_EQ(attachment.GetShareType(), fileTypePair.share_type);
}

INSTANTIATE_TEST_SUITE_P(FileAttachmentTest, FileAttachmentShareTypeTest,
                         testing::ValuesIn(kFileTypes));

TEST_P(FileAttachmentGoogleAppsShareTypeTest, GetShareType) {
  GoogleAppsFileShareType fileType = GetParam();

  FileAttachment attachment = FileAttachment(/*id=*/ 0u,
                                             /*size=*/ 0u,
                                             fileType.file_name,
                                             fileType.mime_type,
                                             FileAttachment::Type::kUnknown);

  EXPECT_EQ(attachment.GetShareType(), fileType.share_type);
}

INSTANTIATE_TEST_SUITE_P(FileAttachmentTest, FileAttachmentGoogleAppsShareTypeTest,
                         testing::ValuesIn(kGoogleAppsFileTypes));