blob: 116317db62f78e806338c1b662ac450103e5d25a [file] [log] [blame]
/*
* Copyright 2020 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "experimental/skrive/include/SkRive.h"
#include "tests/Test.h"
template <typename T, typename U>
void check_type(skiatest::Reporter* reporter, const sk_sp<U>& node, bool expected) {
REPORTER_ASSERT(reporter, node->template is<T>() == expected);
REPORTER_ASSERT(reporter, !!static_cast<const T*>(*node.get()) == expected);
}
DEF_TEST(SkRive_DomTypes, reporter) {
{
auto node = sk_make_sp<skrive::Node>();
check_type<skrive::Component >(reporter, node, true);
check_type<skrive::TransformableComponent>(reporter, node, true);
check_type<skrive::Node >(reporter, node, true);
check_type<skrive::Drawable >(reporter, node, false);
check_type<skrive::Shape >(reporter, node, false);
}
{
auto node = sk_make_sp<skrive::Shape>();
check_type<skrive::Component >(reporter, node, true);
check_type<skrive::TransformableComponent>(reporter, node, true);
check_type<skrive::Node >(reporter, node, true);
check_type<skrive::Drawable >(reporter, node, true);
check_type<skrive::Shape >(reporter, node, true);
}
{
auto node = sk_make_sp<skrive::ColorPaint>(SkPaint::Style::kFill_Style);
check_type<skrive::Component >(reporter, node, true);
check_type<skrive::TransformableComponent>(reporter, node, false);
check_type<skrive::Node >(reporter, node, false);
check_type<skrive::Drawable >(reporter, node, false);
check_type<skrive::Shape >(reporter, node, false);
check_type<skrive::Paint >(reporter, node, true );
check_type<skrive::ColorPaint >(reporter, node, true );
}
{
auto node = sk_make_sp<skrive::Ellipse>();
check_type<skrive::Component >(reporter, node, true);
check_type<skrive::TransformableComponent>(reporter, node, true);
check_type<skrive::Node >(reporter, node, true);
check_type<skrive::Drawable >(reporter, node, false);
check_type<skrive::Shape >(reporter, node, false);
check_type<skrive::Paint >(reporter, node, false );
check_type<skrive::ColorPaint >(reporter, node, false );
check_type<skrive::Geometry >(reporter, node, true);
check_type<skrive::Ellipse >(reporter, node, true);
}
}