-//
-// Copyright (c) 2014 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Flora License, Version 1.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://floralicense.org/license/
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an AS IS BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
#include <iostream>
#include <stdlib.h>
#include <dali-toolkit-test-suite-utils.h>
#include <dali-toolkit/public-api/builder/builder.h>
+#include <dali/integration-api/events/touch-event-integ.h>
using namespace Dali;
using namespace Toolkit;
// Note: To avoid escaping double quotes single quotes are used and then replaced
// before parsing. JSON uses double quotes
//
- std::string JSON_TEXTSTYLE_ONLY("\
-{ \
- 'text-styles': \
- { \
- 'title-text-style':{'font-name': 'Vera', \
- 'font-style': 'Bold', \
- 'point-size': 12.0, \
- 'weight': 'light', \
- 'text-color': [0.0,0.5,0.5,1], \
- 'italic': false, \
- 'underline': false, \
- 'shadow': true, \
- 'glow': true, \
- 'outline': true, \
- 'shadow-color': [0.0,1.0,0.0,1.0], \
- 'shadow-offset': [3.0,2.0], \
- 'shadow-size': 2.0, \
- 'glow-color': [0.9,0.6,0.3,1.0], \
- 'glow-intensity':0.1, \
- 'smooth-edge': 0.45, \
- 'outline-color': [1.0,0.5,0.0,1.0], \
- 'outline-thickness': [0.7,0.6] \
- } \
- } \
-} \
-");
std::string JSON_TEXT_ACTOR("\
{ \
- 'styles': \
+ 'templates': \
{ \
'basic-text': \
{ \
'type':'TextActor', \
+ 'text':'Template Hello', \
+ 'size': [150,170,1], \
+ 'position':[-10,10,0] \
+ } \
+ }, \
+ 'styles': \
+ { \
+ 'basic-text': \
+ { \
'text':'Hello', \
'font':'', \
'parent-origin':[0.0,0.0,0], \
std::string JSON_CORE_ACTOR_TREE("\
{ \
- 'styles': \
+ 'templates': \
{ \
'my-camera': { \
'type':'CameraActor', \
'smooth-edge':0.2, \
'position': [-10.0, 10.0, -1000.0], \
'size': [300.0, 250.0, 0.0] \
- }, \
- 'theme2-text': { \
- 'type':'TextActor', \
- 'text':'Hello', \
- 'font':'Freesans', \
- 'smooth-edge':0.8 \
} \
}, \
+ 'styles': \
+ { \
+ 'theme2-text': { \
+ 'type':'TextActor', \
+ 'text':'Hello', \
+ 'font':'Freesans', \
+ 'smooth-edge':0.8 \
+ } \
+ }, \
'stage': \
[ \
{'name':'txt1', \
return s;
}
+struct BuilderFunctor
+{
+ BuilderFunctor( bool& called ) : mCalled( called )
+ {
+ mCalled = false;
+ }
+
+ void operator()()
+ {
+ mCalled = true;
+ }
+
+ bool& mCalled;
+};
+
} // namespace
test_return_value = TET_PASS;
}
-int UtcDaliBuilderTextActorCreateFromStyle(void)
+int UtcDaliBuilderTextActorCreate(void)
{
ToolkitTestApplication application;
Stage stage = Stage::GetCurrent();
- tet_infoline(" UtcDaliBuilderTextActorCreateFromStyle");
+ tet_infoline(" UtcDaliBuilderTextActorCreate");
Builder builder = Builder::New();
builder.LoadFromString(ReplaceQuotes(JSON_TEXT_ACTOR));
- TextActor actor( TextActor::DownCast( builder.CreateFromStyle("basic-text") ) );
+ TextActor actor( TextActor::DownCast( builder.Create("basic-text") ) );
DALI_TEST_CHECK( actor );
DALI_TEST_CHECK(v.y == 170.0);
DALI_TEST_CHECK(v.z == 1.0);
- DALI_TEST_CHECK(actor.GetText() == "Hello");
+ DALI_TEST_CHECK(actor.GetText() == "Template Hello");
- actor = TextActor::DownCast( builder.CreateFromStyle("*(&^") );
+ actor = TextActor::DownCast( builder.Create("*(&^") );
DALI_TEST_CHECK(!actor);
END_TEST;
builder.LoadFromString(ReplaceQuotes(JSON_CORE_ACTOR_TREE));
- BaseHandle handle = builder.CreateFromStyle("my-camera");
+ BaseHandle handle = builder.Create("my-camera");
CameraActor camera = CameraActor::DownCast(handle);
DALI_TEST_CHECK(camera);
v = camera.GetProperty( camera.GetPropertyIndex("aspect-ratio") );
DALI_TEST_CHECK( 5.0f == v.Get<float>() );
- handle = builder.CreateFromStyle("basic-text");
+ handle = builder.Create("basic-text");
TextActor textActor = TextActor::DownCast(handle);
v = textActor.GetProperty( textActor.GetPropertyIndex("smooth-edge") );
END_TEST;
}
+
+int UtcDaliBuilderCreateFromJson(void)
+{
+ ToolkitTestApplication application;
+
+ tet_infoline(" UtcDaliBuilderCreateFromJson");
+
+ Builder builder = Builder::New();
+
+ TextActor actor = TextActor::DownCast( builder.CreateFromJson("foobar") );
+
+ DALI_TEST_CHECK( !actor );
+
+ actor = TextActor::DownCast(
+ builder.CreateFromJson(
+ ReplaceQuotes("{'type':'TextActor','text':'Hi'}") ) );
+
+ DALI_TEST_CHECK( actor );
+
+ DALI_TEST_CHECK( actor.GetText() == "Hi" );
+
+ END_TEST;
+}
+
+int UtcDaliBuilderApplyFromJson(void)
+{
+ ToolkitTestApplication application;
+
+ tet_infoline(" UtcDaliBuilderApplyFromJson");
+
+ Builder builder = Builder::New();
+
+ TextActor actor = TextActor::DownCast(
+ builder.CreateFromJson(
+ ReplaceQuotes("{'type':'TextActor','text':'Hi'}") ) );
+
+ DALI_TEST_CHECK( actor );
+
+ DALI_TEST_CHECK( actor.GetText() == "Hi" );
+
+ DALI_TEST_CHECK( !builder.ApplyFromJson(actor, ReplaceQuotes("foobar") ) );
+
+ builder.ApplyFromJson(actor, ReplaceQuotes("{'text':'low'}") );
+
+ DALI_TEST_CHECK( actor.GetText() == "low" );
+
+ END_TEST;
+}
+
+int UtcDaliBuilderQuitSignal(void)
+{
+ ToolkitTestApplication application;
+
+ // JSON with a quit event when the actor is touched
+ std::string json(
+ "{"
+ "\"stage\":"
+ "[{"
+ "\"type\": \"Actor\","
+ "\"size\": [100,100,1],"
+ "\"parent-origin\": \"TOP_LEFT\","
+ "\"anchor-point\": \"TOP_LEFT\","
+ "\"signals\": [{"
+ "\"name\": \"touched\","
+ "\"action\": \"quit\""
+ "}]"
+ "}]"
+ "}"
+ );
+ Builder builder = Builder::New();
+ builder.LoadFromString( json );
+ builder.AddActors ( Stage::GetCurrent().GetRootLayer() );
+
+ // Connect to builder's quit signal
+ bool functorCalled( false );
+ builder.QuitSignal().Connect( &application, BuilderFunctor( functorCalled ) );
+
+ // Render and notify
+ application.SendNotification();
+ application.Render();
+
+ // Emit touch event and check that our quit method is called
+ Integration::TouchEvent touchEvent;
+ touchEvent.points.push_back( TouchPoint ( 0, TouchPoint::Down, 10.0f, 10.0f ) );
+ application.ProcessEvent( touchEvent );
+ DALI_TEST_CHECK( functorCalled );
+
+ END_TEST;
+}