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/test.h>
10d8e2a76bSBrendan Higgins #include <linux/slab.h>
11d8e2a76bSBrendan Higgins 
12109fb06fSAlan Maguire #include "string-stream.h"
13109fb06fSAlan Maguire 
string_stream_test_empty_on_creation(struct kunit * test)14d8e2a76bSBrendan Higgins static void string_stream_test_empty_on_creation(struct kunit *test)
15d8e2a76bSBrendan Higgins {
16d8e2a76bSBrendan Higgins 	struct string_stream *stream = alloc_string_stream(test, GFP_KERNEL);
17d8e2a76bSBrendan Higgins 
18d8e2a76bSBrendan Higgins 	KUNIT_EXPECT_TRUE(test, string_stream_is_empty(stream));
19d8e2a76bSBrendan Higgins }
20d8e2a76bSBrendan Higgins 
string_stream_test_not_empty_after_add(struct kunit * test)21d8e2a76bSBrendan Higgins static void string_stream_test_not_empty_after_add(struct kunit *test)
22d8e2a76bSBrendan Higgins {
23d8e2a76bSBrendan Higgins 	struct string_stream *stream = alloc_string_stream(test, GFP_KERNEL);
24d8e2a76bSBrendan Higgins 
25d8e2a76bSBrendan Higgins 	string_stream_add(stream, "Foo");
26d8e2a76bSBrendan Higgins 
27d8e2a76bSBrendan Higgins 	KUNIT_EXPECT_FALSE(test, string_stream_is_empty(stream));
28d8e2a76bSBrendan Higgins }
29d8e2a76bSBrendan Higgins 
string_stream_test_get_string(struct kunit * test)30d8e2a76bSBrendan Higgins static void string_stream_test_get_string(struct kunit *test)
31d8e2a76bSBrendan Higgins {
32d8e2a76bSBrendan Higgins 	struct string_stream *stream = alloc_string_stream(test, GFP_KERNEL);
33d8e2a76bSBrendan Higgins 	char *output;
34d8e2a76bSBrendan Higgins 
35d8e2a76bSBrendan Higgins 	string_stream_add(stream, "Foo");
36d8e2a76bSBrendan Higgins 	string_stream_add(stream, " %s", "bar");
37d8e2a76bSBrendan Higgins 
38d8e2a76bSBrendan Higgins 	output = string_stream_get_string(stream);
39e4aea8f8SBrendan Higgins 	KUNIT_ASSERT_STREQ(test, output, "Foo bar");
40d8e2a76bSBrendan Higgins }
41d8e2a76bSBrendan Higgins 
42d8e2a76bSBrendan Higgins static struct kunit_case string_stream_test_cases[] = {
43d8e2a76bSBrendan Higgins 	KUNIT_CASE(string_stream_test_empty_on_creation),
44d8e2a76bSBrendan Higgins 	KUNIT_CASE(string_stream_test_not_empty_after_add),
45d8e2a76bSBrendan Higgins 	KUNIT_CASE(string_stream_test_get_string),
46d8e2a76bSBrendan Higgins 	{}
47d8e2a76bSBrendan Higgins };
48d8e2a76bSBrendan Higgins 
49d8e2a76bSBrendan Higgins static struct kunit_suite string_stream_test_suite = {
50d8e2a76bSBrendan Higgins 	.name = "string-stream-test",
51d8e2a76bSBrendan Higgins 	.test_cases = string_stream_test_cases
52d8e2a76bSBrendan Higgins };
53c475c77dSAlan Maguire kunit_test_suites(&string_stream_test_suite);
54