2019-09-23 02:02:34 -07:00
// SPDX-License-Identifier: GPL-2.0
/*
* Assertion and expectation serialization API .
*
* Copyright ( C ) 2019 , Google LLC .
* Author : Brendan Higgins < brendanhiggins @ google . com >
*/
# include <kunit/assert.h>
2020-03-26 14:25:09 +00:00
# include <kunit/test.h>
2019-09-23 02:02:34 -07:00
2020-01-06 22:28:18 +00:00
# include "string-stream.h"
2019-09-23 02:02:34 -07:00
void kunit_base_assert_format ( const struct kunit_assert * assert ,
struct string_stream * stream )
{
const char * expect_or_assert = NULL ;
switch ( assert - > type ) {
case KUNIT_EXPECTATION :
expect_or_assert = " EXPECTATION " ;
break ;
case KUNIT_ASSERTION :
expect_or_assert = " ASSERTION " ;
break ;
}
string_stream_add ( stream , " %s FAILED at %s:%d \n " ,
expect_or_assert , assert - > file , assert - > line ) ;
}
2020-01-06 22:28:20 +00:00
EXPORT_SYMBOL_GPL ( kunit_base_assert_format ) ;
2019-09-23 02:02:34 -07:00
void kunit_assert_print_msg ( const struct kunit_assert * assert ,
struct string_stream * stream )
{
if ( assert - > message . fmt )
string_stream_add ( stream , " \n %pV " , & assert - > message ) ;
}
2020-01-06 22:28:20 +00:00
EXPORT_SYMBOL_GPL ( kunit_assert_print_msg ) ;
2019-09-23 02:02:34 -07:00
void kunit_fail_assert_format ( const struct kunit_assert * assert ,
struct string_stream * stream )
{
kunit_base_assert_format ( assert , stream ) ;
string_stream_add ( stream , " %pV " , & assert - > message ) ;
}
2020-01-06 22:28:20 +00:00
EXPORT_SYMBOL_GPL ( kunit_fail_assert_format ) ;
2019-09-23 02:02:34 -07:00
void kunit_unary_assert_format ( const struct kunit_assert * assert ,
struct string_stream * stream )
{
struct kunit_unary_assert * unary_assert = container_of (
assert , struct kunit_unary_assert , assert ) ;
kunit_base_assert_format ( assert , stream ) ;
if ( unary_assert - > expected_true )
string_stream_add ( stream ,
2020-03-26 14:25:09 +00:00
KUNIT_SUBTEST_INDENT " Expected %s to be true, but is false \n " ,
unary_assert - > condition ) ;
2019-09-23 02:02:34 -07:00
else
string_stream_add ( stream ,
2020-03-26 14:25:09 +00:00
KUNIT_SUBTEST_INDENT " Expected %s to be false, but is true \n " ,
unary_assert - > condition ) ;
2019-09-23 02:02:34 -07:00
kunit_assert_print_msg ( assert , stream ) ;
}
2020-01-06 22:28:20 +00:00
EXPORT_SYMBOL_GPL ( kunit_unary_assert_format ) ;
2019-09-23 02:02:34 -07:00
void kunit_ptr_not_err_assert_format ( const struct kunit_assert * assert ,
struct string_stream * stream )
{
struct kunit_ptr_not_err_assert * ptr_assert = container_of (
assert , struct kunit_ptr_not_err_assert , assert ) ;
kunit_base_assert_format ( assert , stream ) ;
if ( ! ptr_assert - > value ) {
string_stream_add ( stream ,
2020-03-26 14:25:09 +00:00
KUNIT_SUBTEST_INDENT " Expected %s is not null, but is \n " ,
ptr_assert - > text ) ;
2019-09-23 02:02:34 -07:00
} else if ( IS_ERR ( ptr_assert - > value ) ) {
string_stream_add ( stream ,
2020-03-26 14:25:09 +00:00
KUNIT_SUBTEST_INDENT " Expected %s is not error, but is: %ld \n " ,
ptr_assert - > text ,
PTR_ERR ( ptr_assert - > value ) ) ;
2019-09-23 02:02:34 -07:00
}
kunit_assert_print_msg ( assert , stream ) ;
}
2020-01-06 22:28:20 +00:00
EXPORT_SYMBOL_GPL ( kunit_ptr_not_err_assert_format ) ;
2019-09-23 02:02:34 -07:00
void kunit_binary_assert_format ( const struct kunit_assert * assert ,
struct string_stream * stream )
{
struct kunit_binary_assert * binary_assert = container_of (
assert , struct kunit_binary_assert , assert ) ;
kunit_base_assert_format ( assert , stream ) ;
string_stream_add ( stream ,
2020-03-26 14:25:09 +00:00
KUNIT_SUBTEST_INDENT " Expected %s %s %s, but \n " ,
binary_assert - > left_text ,
binary_assert - > operation ,
binary_assert - > right_text ) ;
string_stream_add ( stream , KUNIT_SUBSUBTEST_INDENT " %s == %lld \n " ,
binary_assert - > left_text ,
binary_assert - > left_value ) ;
string_stream_add ( stream , KUNIT_SUBSUBTEST_INDENT " %s == %lld " ,
binary_assert - > right_text ,
binary_assert - > right_value ) ;
2019-09-23 02:02:34 -07:00
kunit_assert_print_msg ( assert , stream ) ;
}
2020-01-06 22:28:20 +00:00
EXPORT_SYMBOL_GPL ( kunit_binary_assert_format ) ;
2019-09-23 02:02:34 -07:00
void kunit_binary_ptr_assert_format ( const struct kunit_assert * assert ,
struct string_stream * stream )
{
struct kunit_binary_ptr_assert * binary_assert = container_of (
assert , struct kunit_binary_ptr_assert , assert ) ;
kunit_base_assert_format ( assert , stream ) ;
string_stream_add ( stream ,
2020-03-26 14:25:09 +00:00
KUNIT_SUBTEST_INDENT " Expected %s %s %s, but \n " ,
binary_assert - > left_text ,
binary_assert - > operation ,
binary_assert - > right_text ) ;
string_stream_add ( stream , KUNIT_SUBSUBTEST_INDENT " %s == %px \n " ,
binary_assert - > left_text ,
binary_assert - > left_value ) ;
string_stream_add ( stream , KUNIT_SUBSUBTEST_INDENT " %s == %px " ,
binary_assert - > right_text ,
binary_assert - > right_value ) ;
2019-09-23 02:02:34 -07:00
kunit_assert_print_msg ( assert , stream ) ;
}
2020-01-06 22:28:20 +00:00
EXPORT_SYMBOL_GPL ( kunit_binary_ptr_assert_format ) ;
2019-09-23 02:02:34 -07:00
void kunit_binary_str_assert_format ( const struct kunit_assert * assert ,
struct string_stream * stream )
{
struct kunit_binary_str_assert * binary_assert = container_of (
assert , struct kunit_binary_str_assert , assert ) ;
kunit_base_assert_format ( assert , stream ) ;
string_stream_add ( stream ,
2020-03-26 14:25:09 +00:00
KUNIT_SUBTEST_INDENT " Expected %s %s %s, but \n " ,
binary_assert - > left_text ,
binary_assert - > operation ,
binary_assert - > right_text ) ;
string_stream_add ( stream , KUNIT_SUBSUBTEST_INDENT " %s == %s \n " ,
binary_assert - > left_text ,
binary_assert - > left_value ) ;
string_stream_add ( stream , KUNIT_SUBSUBTEST_INDENT " %s == %s " ,
binary_assert - > right_text ,
binary_assert - > right_value ) ;
2019-09-23 02:02:34 -07:00
kunit_assert_print_msg ( assert , stream ) ;
}
2020-01-06 22:28:20 +00:00
EXPORT_SYMBOL_GPL ( kunit_binary_str_assert_format ) ;