1d8e2a76bSBrendan Higgins // SPDX-License-Identifier: GPL-2.0
2d8e2a76bSBrendan Higgins /*
3d8e2a76bSBrendan Higgins  * KUnit test for struct string_stream.
4d8e2a76bSBrendan Higgins  *
5d8e2a76bSBrendan Higgins  * Copyright (C) 2019, Google LLC.
6d8e2a76bSBrendan Higgins  * Author: Brendan Higgins <brendanhiggins@google.com>
7d8e2a76bSBrendan Higgins  */
8d8e2a76bSBrendan Higgins 
9d8e2a76bSBrendan Higgins #include <kunit/string-stream.h>
10d8e2a76bSBrendan Higgins #include <kunit/test.h>
11d8e2a76bSBrendan Higgins #include <linux/slab.h>
12d8e2a76bSBrendan Higgins 
13d8e2a76bSBrendan Higgins static void string_stream_test_empty_on_creation(struct kunit *test)
14d8e2a76bSBrendan Higgins {
15d8e2a76bSBrendan Higgins 	struct string_stream *stream = alloc_string_stream(test, GFP_KERNEL);
16d8e2a76bSBrendan Higgins 
17d8e2a76bSBrendan Higgins 	KUNIT_EXPECT_TRUE(test, string_stream_is_empty(stream));
18d8e2a76bSBrendan Higgins }
19d8e2a76bSBrendan Higgins 
20d8e2a76bSBrendan Higgins static void string_stream_test_not_empty_after_add(struct kunit *test)
21d8e2a76bSBrendan Higgins {
22d8e2a76bSBrendan Higgins 	struct string_stream *stream = alloc_string_stream(test, GFP_KERNEL);
23d8e2a76bSBrendan Higgins 
24d8e2a76bSBrendan Higgins 	string_stream_add(stream, "Foo");
25d8e2a76bSBrendan Higgins 
26d8e2a76bSBrendan Higgins 	KUNIT_EXPECT_FALSE(test, string_stream_is_empty(stream));
27d8e2a76bSBrendan Higgins }
28d8e2a76bSBrendan Higgins 
29d8e2a76bSBrendan Higgins static void string_stream_test_get_string(struct kunit *test)
30d8e2a76bSBrendan Higgins {
31d8e2a76bSBrendan Higgins 	struct string_stream *stream = alloc_string_stream(test, GFP_KERNEL);
32d8e2a76bSBrendan Higgins 	char *output;
33d8e2a76bSBrendan Higgins 
34d8e2a76bSBrendan Higgins 	string_stream_add(stream, "Foo");
35d8e2a76bSBrendan Higgins 	string_stream_add(stream, " %s", "bar");
36d8e2a76bSBrendan Higgins 
37d8e2a76bSBrendan Higgins 	output = string_stream_get_string(stream);
38d8e2a76bSBrendan Higgins 	KUNIT_EXPECT_STREQ(test, output, "Foo bar");
39d8e2a76bSBrendan Higgins }
40d8e2a76bSBrendan Higgins 
41d8e2a76bSBrendan Higgins static struct kunit_case string_stream_test_cases[] = {
42d8e2a76bSBrendan Higgins 	KUNIT_CASE(string_stream_test_empty_on_creation),
43d8e2a76bSBrendan Higgins 	KUNIT_CASE(string_stream_test_not_empty_after_add),
44d8e2a76bSBrendan Higgins 	KUNIT_CASE(string_stream_test_get_string),
45d8e2a76bSBrendan Higgins 	{}
46d8e2a76bSBrendan Higgins };
47d8e2a76bSBrendan Higgins 
48d8e2a76bSBrendan Higgins static struct kunit_suite string_stream_test_suite = {
49d8e2a76bSBrendan Higgins 	.name = "string-stream-test",
50d8e2a76bSBrendan Higgins 	.test_cases = string_stream_test_cases
51d8e2a76bSBrendan Higgins };
52d8e2a76bSBrendan Higgins kunit_test_suite(string_stream_test_suite);
53