Menu

[r6]: / trunk / JavaScript / UnitTest / NativeTest.cs  Maximize  Restore  History

Download this file

96 lines (84 with data), 2.8 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/** JavaScript -- DOT NET Javascript Library
* Copyright (C) 2005 John Garrison
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
using System;
using NUnit.Framework;
namespace JavaScript.UnitTest
{
[TestFixture]
public class NativeTest
{
public NativeTest()
{
m_eng.AddGlobalVar( "document", new TestDocument() );
}
[Test]
public void NativeProperty()
{
Assert.AreEqual("My Page", m_eng.Eval("document.title;").ToString(), "native title property error");
m_eng.Eval("document.title = 'test';");
Assert.AreEqual("test", m_eng.Eval("document.title;").ToString(), "native title property error");
}
[Test]
public void NativeFunction()
{
Assert.AreEqual("bob", m_eng.Eval("document.getElementById('bob');").ToString(), "native function call" );
Assert.AreEqual("fred", m_eng.Eval("document.getElementById('fred');").ToString(), "native function call" );
}
JsEngine m_eng = new JsEngine();
TestDocument m_doc = new TestDocument();
}
/// <summary>
/// Test document
/// </summary>
public class TestDocument : TypeNative
{
public TestDocument() : base( "document", new JsPropertyResolver( Resolver ) )
{
base.AddLValue( new NativeLValue( "title", new NativeValueGet( TitleGetter ), new NativeValueSet( TitleSetter ) ) );
TypeNativeFunction nfn = new TypeNativeFunction( "getElementById", new string[] {"id"}, new JsNativeCall( GetElementById ) );
base.SetProperty( nfn.Name, nfn );
}
public static LValue Resolver( TypeNative me, string name )
{
if ( me.GetDynamicLValue( name ) != null )
{
return me.GetDynamicLValue( name );
}
switch ( name )
{
case "bob":
break;
}
return null;
}
public JsObject GetElementById( StackFrame ctx, int argCount )
{
string id = ctx.RValue("id").ToString();
return new TypeString( id );
}
public JsObject TitleGetter( string name )
{
return new TypeString( m_title );
}
public void TitleSetter( string name, JsObject val )
{
m_title = val.ToString();
}
protected string m_title = "My Page";
}
}
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.