2 * This file is part of the LibreOffice project.
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 * This file incorporates work covered by the following license notice:
10 * Licensed to the Apache Software Foundation (ASF) under one or more
11 * contributor license agreements. See the NOTICE file distributed
12 * with this work for additional information regarding copyright
13 * ownership. The ASF licenses this file to you under the Apache
14 * License, Version 2.0 (the "License"); you may not use this file
15 * except in compliance with the License. You may obtain a copy of
16 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 using System
.Diagnostics
;
21 using System
.Threading
;
22 using System
.Runtime
.CompilerServices
;
25 using unoidl
.com
.sun
.star
.uno
;
26 using unoidl
.com
.sun
.star
.lang
;
27 using unoidl
.test
.testtools
.bridgetest
;
32 class CheckFailed
: System
.Exception
{
33 public CheckFailed(string message
): base(message
) {}
36 public class BridgeTestObject
: WeakBase
, XRecursiveCall
, XBridgeTest2
38 private XComponentContext m_xContext
;
40 public BridgeTestObject( XComponentContext xContext
)
42 m_xContext
= xContext
;
44 public BridgeTestObject()
52 private ushort _ushort
;
56 private ulong _uhyper
;
58 private double _double
;
59 private String _string
;
61 private short _short2
;
62 private Object _xInterface
;
64 private TestEnum _testEnum
= TestEnum
.TEST
;
65 private TestElement
[] _testElements
= new TestElement
[0];
66 private TestDataElements _testDataElements
= new TestDataElements();
67 private int _nLastCallId
= 0;
68 private bool _bFirstCall
= true;
69 private bool _bSequenceOfCallTestPassed
= true;
71 private bool[] _arBool
;
72 private char[] _arChar
;
73 private byte[] _arByte
;
74 private short[]_arShort
;
75 private int[] _arLong
;
76 private long[] _arHyper
;
77 private UInt16
[] _arUShort
;
78 private UInt32
[] _arULong
;
79 private UInt64
[] _arUHyper
;
80 private string[] _arString
;
81 private float[] _arFloat
;
82 private double[] _arDouble
;
83 private TestEnum
[] _arEnum
;
84 private Object
[] _arObject
;
85 private int[][] _arLong2
;
86 private int[][][] _arLong3
;
89 // private int _raiseAttr1;
92 public void setValues(
110 TestElement
[] testElements
,
111 TestDataElements testDataElements
)
113 Debug
.WriteLine( "##### " + GetType().FullName
+ ".setValues:" + any
);
126 _testEnum
= testEnum
;
130 _xInterface
= xInterface
;
132 _testElements
= testElements
;
133 _testDataElements
= testDataElements
;
136 public TestDataElements
setValues2(
137 /*INOUT*/ref bool io_bool
,
138 /*INOUT*/ref char io_char
,
139 /*INOUT*/ref byte io_byte
,
140 /*INOUT*/ref short io_short
,
141 /*INOUT*/ref ushort io_ushort
,
142 /*INOUT*/ref int io_long
,
143 /*INOUT*/ref uint io_ulong
,
144 /*INOUT*/ref long io_hyper
,
145 /*INOUT*/ref ulong io_uhyper
,
146 /*INOUT*/ref float io_float
,
147 /*INOUT*/ref double io_double
,
148 /*INOUT*/ref TestEnum io_testEnum
,
149 /*INOUT*/ref String io_string
,
150 /*INOUT*/ref byte io_byte2
,
151 /*INOUT*/ref short io_short2
,
152 /*INOUT*/ref Object io_xInterface
,
153 /*INOUT*/ref Any io_any
,
154 /*INOUT*/ref TestElement
[] io_testElements
,
155 /*INOUT*/ref TestDataElements io_testDataElements
)
157 Debug
.WriteLine( "##### " + GetType().FullName
+ ".setValues2:" + io_any
);
170 _testEnum
= io_testEnum
;
174 _xInterface
= io_xInterface
;
176 _testElements
= (TestElement
[]) io_testElements
.Clone();
177 _testDataElements
= io_testDataElements
;
179 TestElement temp
= io_testElements
[ 0 ];
180 io_testElements
[ 0 ] = io_testElements
[ 1 ];
181 io_testElements
[ 1 ] = temp
;
183 return _testDataElements
;
186 public TestDataElements
getValues(
187 /*OUT*/out bool o_bool
,
188 /*OUT*/out char o_char
,
189 /*OUT*/out byte o_byte
,
190 /*OUT*/out short o_short
,
191 /*OUT*/out ushort o_ushort
,
192 /*OUT*/out int o_long
,
193 /*OUT*/out uint o_ulong
,
194 /*OUT*/out long o_hyper
,
195 /*OUT*/out ulong o_uhyper
,
196 /*OUT*/out float o_float
,
197 /*OUT*/out double o_double
,
198 /*OUT*/out TestEnum o_testEnum
,
199 /*OUT*/out String o_string
,
200 /*OUT*/out byte o_byte2
,
201 /*OUT*/out short o_short2
,
202 /*OUT*/out Object o_xInterface
,
203 /*OUT*/out Any o_any
,
204 /*OUT*/out TestElement
[] o_testElements
,
205 /*OUT*/out TestDataElements o_testDataElements
)
207 Debug
.WriteLine( "##### " + GetType().FullName
+ ".getValues" );
220 o_testEnum
= _testEnum
;
224 o_xInterface
= _xInterface
;
226 o_testElements
= _testElements
;
227 o_testDataElements
= _testDataElements
;
229 return _testDataElements
;
232 public SmallStruct
echoSmallStruct(/*[in]*/SmallStruct arg
)
237 public MediumStruct
echoMediumStruct(/*[in]*/MediumStruct arg
)
242 public BigStruct
echoBigStruct(/*[in]*/BigStruct arg
)
247 public TwoFloats
echoTwoFloats(/*[in]*/TwoFloats arg
)
252 public FourFloats
echoFourFloats(/*[in]*/FourFloats arg
)
257 public MixedFloatAndInteger
echoMixedFloatAndInteger(/*[in]*/MixedFloatAndInteger arg
)
262 public DoubleHyper
echoDoubleHyper(Mix s
) { return s; }
264 public HyperDouble
echoHyperDouble(Mix s
) { return s; }
266 public FloatFloatLongByte
echoFloatFloatLongByte(Mix s
) { return s; }
268 public ThreeByteStruct
echoThreeByteStruct(/*[in]*/ThreeByteStruct arg
)
273 public int testPPCAlignment( long l1
, long l2
, int i1
, long l3
, int i2
)
278 public int testPPC64Alignment( double d1
, double d2
, double d3
, int i1
)
283 public double testTenDoubles( double d1
, double d2
, double d3
, double d4
, double d5
, double d6
, double d7
, double d8
, double d9
, double d10
)
285 return d1
+ d2
+ d3
+ d4
+ d5
+ d6
+ d7
+ d8
+ d9
+ d10
;
291 get { return _bool; }
292 set { _bool = value; }
296 get { return _byte; }
297 set { _byte = value; }
301 get { return _char; }
302 set { _char = value; }
306 get { return _short; }
307 set { _short = value; }
311 get { return _ushort; }
312 set { _ushort = value; }
316 get { return _long; }
317 set { _long = value; }
321 get { return _ulong; }
322 set { _ulong = value; }
326 get { return _hyper; }
327 set { _hyper = value; }
331 get { return _uhyper; }
332 set { _uhyper = value; }
336 get { return _float; }
337 set { _float = value; }
341 get { return _double; }
342 set { _double = value; }
346 get { return _testEnum; }
347 set { _testEnum = value; }
351 get { return _string; }
352 set { _string = value; }
356 get { return _byte2; }
357 set { _byte2 = value; }
361 get { return _short2; }
362 set { _short2 = value; }
364 public Object Interface
366 get { return _xInterface; }
367 set { _xInterface = value; }
373 Debug
.WriteLine( "##### " + GetType().FullName
+ ".Any" );
377 Debug
.WriteLine( "##### " + GetType().FullName
+ ".Any:" + value );
381 public TestElement
[] Sequence
383 get { return _testElements; }
384 set { _testElements = value; }
386 public TestDataElements Struct
388 get { return _testDataElements; }
389 set { _testDataElements = value; }
391 public Any
transportAny(Any
value)
395 public void call(int nCallId
, int nWaitMUSEC
)
397 Thread
.Sleep(nWaitMUSEC
/ 10000);
403 _bSequenceOfCallTestPassed
= _bSequenceOfCallTestPassed
&& (nCallId
> _nLastCallId
);
405 _nLastCallId
= nCallId
;
407 public void callOneway( int nCallId
, int nWaitMUSEC
)
409 Thread
.Sleep(nWaitMUSEC
/ 10000);
411 _bSequenceOfCallTestPassed
= _bSequenceOfCallTestPassed
&& (nCallId
> _nLastCallId
);
412 _nLastCallId
= nCallId
;
414 public bool sequenceOfCallTestPassed()
416 return _bSequenceOfCallTestPassed
;
418 [MethodImpl( MethodImplOptions
.Synchronized
)]
419 public void callRecursivly( XRecursiveCall xCall
, int nToCall
)
426 xCall
.callRecursivly(this , nToCall
);
430 [MethodImpl( MethodImplOptions
.Synchronized
)]
431 public void startRecursiveCall( XRecursiveCall xCall
, int nToCall
)
438 xCall
.callRecursivly( this , nToCall
);
444 public TestDataElements
raiseException(
445 short nArgumentPos
, String rMsg
, Object xContext
)
447 throw new IllegalArgumentException(rMsg
, xContext
, nArgumentPos
);
449 public void raiseRuntimeExceptionOneway( String rMsg
, Object xContext
)
451 throw new RuntimeException(rMsg
, xContext
);
454 private void dothrow( System
.Exception e
)
458 public int RuntimeException
463 dothrow( new RuntimeException(_string
, _xInterface
) );
466 catch (System
.Exception exc
)
471 set { throw new RuntimeException(_string, _xInterface); }
475 public int[][] setDim2(int[][] val
)
481 public int[][][] setDim3(int[][][] val
)
487 public Any
[] setSequenceAny(Any
[] val
)
493 public bool[] setSequenceBool(bool[] val
)
499 public byte[] setSequenceByte(byte[] val
)
505 public char[] setSequenceChar(char[] val
)
511 public short[] setSequenceShort(short[] val
)
517 public int[] setSequenceLong(int[] val
)
523 public long[] setSequenceHyper(long[] val
)
529 public float[] setSequenceFloat(float[] val
)
535 public double[] setSequenceDouble(double[] val
)
541 public TestEnum
[] setSequenceEnum(TestEnum
[] val
)
547 public UInt16
[] setSequenceUShort(UInt16
[] val
)
553 public UInt32
[] setSequenceULong(UInt32
[] val
)
559 public UInt64
[] setSequenceUHyper(UInt64
[] val
)
565 public Object
[] setSequenceXInterface(Object
[] val
)
571 public string[] setSequenceString(string[] val
)
577 public TestElement
[] setSequenceStruct(TestElement
[] val
)
583 public void setSequencesInOut(ref bool[] aSeqBoolean
,
586 ref short[] aSeqShort
,
587 ref UInt16
[] aSeqUShort
,
589 ref UInt32
[] aSeqULong
,
590 ref long[] aSeqHyper
,
591 ref UInt64
[] aSeqUHyper
,
592 ref float[] aSeqFloat
,
593 ref double[] aSeqDouble
,
594 ref TestEnum
[] aSeqTestEnum
,
595 ref string[] aSeqString
,
596 ref object[] aSeqXInterface
,
598 ref int[][] aSeqDim2
,
599 ref int[][][] aSeqDim3
)
601 _arBool
= aSeqBoolean
;
604 _arShort
= aSeqShort
;
605 _arUShort
= aSeqUShort
;
607 _arULong
= aSeqULong
;
608 _arHyper
= aSeqHyper
;
609 _arUHyper
= aSeqUHyper
;
610 _arFloat
= aSeqFloat
;
611 _arDouble
= aSeqDouble
;
612 _arEnum
= aSeqTestEnum
;
613 _arString
= aSeqString
;
614 _arObject
= aSeqXInterface
;
620 public void setSequencesOut(out bool[] aSeqBoolean
,
623 out short[] aSeqShort
,
624 out UInt16
[] aSeqUShort
,
626 out UInt32
[] aSeqULong
,
627 out long[] aSeqHyper
,
628 out UInt64
[] aSeqUHyper
,
629 out float[] aSeqFloat
,
630 out double[] aSeqDouble
,
631 out TestEnum
[] aSeqTestEnum
,
632 out string[] aSeqString
,
633 out object[] aSeqXInterface
,
635 out int[][] aSeqDim2
,
636 out int[][][] aSeqDim3
)
638 aSeqBoolean
= _arBool
;
641 aSeqShort
= _arShort
;
642 aSeqUShort
= _arUShort
;
644 aSeqULong
= _arULong
;
645 aSeqHyper
= _arHyper
;
646 aSeqUHyper
= _arUHyper
;
647 aSeqFloat
= _arFloat
;
648 aSeqDouble
= _arDouble
;
649 aSeqTestEnum
= _arEnum
;
650 aSeqString
= _arString
;
651 aSeqXInterface
= _arObject
;
658 /* Attention: Debugging this code (probably in mixed mode) may lead to exceptions
659 * which do not occur when running normally (Visual Studio 2003)
661 public void testConstructorsService(XComponentContext context
)
663 Constructors
.create1(context
,
665 0x80, // -128 in C++,
679 new byte[] { 0x80}
, // in C++ the value is compared with SAL_MIN_INT8 which is -128
680 new short[] { Int16.MinValue }
,
681 new UInt16
[] { UInt16.MaxValue }
,
682 new Int32
[] {Int32.MinValue}
,
683 new UInt32
[] { UInt32.MaxValue }
,
684 new long[] { Int64.MinValue }
,
685 new UInt64
[] { UInt64.MaxValue }
,
686 new float[] { 0.123f }
,
687 new double[] { 0.456 }
,
689 new string[] { "test" }
,
690 new Type
[] { typeof(Any) }
,
691 new Any
[] { new Any(true) }
,
692 new bool[][] { new bool[] { true }
},
693 new Any
[][] { new Any[] { new Any(true) }
},
694 new TestEnum
[] { TestEnum.TWO }
,
695 new TestStruct
[] { new TestStruct(10) }
,
696 new TestPolyStruct
[] { new TestPolyStruct(true) }
,
697 new TestPolyStruct
[] { new TestPolyStruct(new Any(true)) }
,
698 new object[] { null }
,
701 new TestPolyStruct(true),
702 new TestPolyStruct(new Any(true)),
706 Constructors
.create2(context
,
708 new Any((System
.Byte
) 0x80),
709 new Any(Int16
.MinValue
),
710 new Any(UInt16
.MaxValue
),
711 new Any(Int32
.MinValue
),
712 new Any(UInt32
.MaxValue
),
713 new Any(Int64
.MinValue
),
714 new Any(UInt64
.MaxValue
),
719 new Any(typeof(Any
)),
721 new Any(typeof(bool[]), new bool[] { true }
),
722 new Any(typeof(byte[]), new byte[] { (System.Byte) 0x80}
),
723 new Any(typeof(short[]), new short[] { Int16.MinValue }
),
724 new Any(typeof(UInt16
[]), new UInt16
[] { UInt16.MaxValue }
),
725 new Any(typeof(int[]), new int[] { Int32.MinValue }
),
726 new Any(typeof(UInt32
[]), new UInt32
[] { UInt32.MaxValue }
),
727 new Any(typeof(long[]), new long[] { Int64.MinValue }
),
728 new Any(typeof(UInt64
[]), new UInt64
[] { UInt64.MaxValue }
),
729 new Any(typeof(float[]), new float[] { 0.123f }
),
730 new Any(typeof(double[]), new double[] { 0.456 }
),
731 new Any(typeof(char[]), new char[] { 'X' }
),
732 new Any(typeof(string[]), new string[] { "test" }
),
733 new Any(typeof(Type
[]), new Type
[] { typeof(Any) }
),
734 new Any(typeof(Any
[]), new Any
[] { new Any(true) }
),
735 new Any(typeof(bool[][]), new bool[][] { new bool[] { true }
}),
737 typeof(Any
[][]), new Any
[][] { new Any[] { new Any(true) }
}),
738 new Any(typeof(TestEnum
[]), new TestEnum
[] { TestEnum.TWO }
),
740 typeof(TestStruct
[]), new TestStruct
[] { new TestStruct(10) }
),
742 PolymorphicType
.GetType(
743 typeof(TestPolyStruct
[]),
744 "unoidl.test.testtools.bridgetest.TestPolyStruct<System.Boolean>[]"),
745 new TestPolyStruct
[] { new TestPolyStruct(true) }
) ,
747 PolymorphicType
.GetType(
748 typeof(TestPolyStruct
[]),
749 "unoidl.test.testtools.bridgetest.TestPolyStruct<uno.Any>[]"),
750 new TestPolyStruct
[] { new TestPolyStruct(new Any(true)) }
),
751 new Any(typeof(object[])/*TODO*/, new object[] { null }
),
752 new Any(typeof(TestEnum
), TestEnum
.TWO
),
753 new Any(typeof(TestStruct
), new TestStruct(10)),
755 PolymorphicType
.GetType(
756 typeof(TestPolyStruct
),
757 "unoidl.test.testtools.bridgetest.TestPolyStruct<System.Boolean>"),
758 new TestPolyStruct(true)),
760 PolymorphicType
.GetType(
761 typeof(TestPolyStruct
),
762 "unoidl.test.testtools.bridgetest.TestPolyStruct<uno.Any>"),
763 new TestPolyStruct(new Any(true))),
764 new Any(typeof(object), null)
768 XMultiBase1 xMulti
= Constructors2
.create1(
770 new TestPolyStruct(typeof(int)),
771 new TestPolyStruct(new Any(true)),
772 new TestPolyStruct(true),
773 new TestPolyStruct((Byte
) 0x80),
774 new TestPolyStruct(Int16
.MinValue
),
775 new TestPolyStruct(Int32
.MinValue
),
776 new TestPolyStruct(Int64
.MinValue
),
777 new TestPolyStruct('X'),
778 new TestPolyStruct("test"),
779 new TestPolyStruct(0.123f
),
780 new TestPolyStruct(0.456d
),
781 new TestPolyStruct(new object()),
782 new TestPolyStruct(new uno
.util
.WeakComponentBase()),
783 new TestPolyStruct(TestEnum
.TWO
),
784 new TestPolyStruct(new TestPolyStruct2('X', new Any(true))),
785 new TestPolyStruct(new TestPolyStruct2(new TestPolyStruct2('X', new Any(true)), "test")),
786 new TestPolyStruct2("test", new TestPolyStruct2('X', new TestPolyStruct(new Any(true)))),
787 new TestPolyStruct2( new TestPolyStruct2('X', new Any(true)), new TestPolyStruct('X')),
788 new TestPolyStruct(new Type
[] { typeof(int)}
),
789 new TestPolyStruct(new Any
[] { new Any(true) }
),
790 new TestPolyStruct(new bool[] {true}
),
791 new TestPolyStruct(new byte[] {0x80}
),
792 new TestPolyStruct(new short[] {Int16.MinValue}
),
793 new TestPolyStruct(new int[] {Int32.MinValue}
),
794 new TestPolyStruct(new long[] {Int64.MinValue}
),
795 new TestPolyStruct(new char[] {'X'}
),
796 new TestPolyStruct(new string[] {"test"}
),
797 new TestPolyStruct(new float[] {0.123f}
),
798 new TestPolyStruct(new double[] {0.456d}
),
799 new TestPolyStruct(new object[] {new object()}
),
800 new TestPolyStruct(new unoidl
.com
.sun
.star
.lang
.XComponent
[] {new uno.util.WeakComponentBase()}
),
801 new TestPolyStruct(new TestEnum
[] {TestEnum.TWO}
),
802 new TestPolyStruct(new TestPolyStruct2
[] {new TestPolyStruct2('X', new Any[] {new Any(true)}
)}),
803 new TestPolyStruct(new TestPolyStruct2
[] {
804 new TestPolyStruct2(new TestPolyStruct('X'), new Any
[] {new Any(true)}
)}),
805 new TestPolyStruct(new int[][] { new int[] {Int32.MinValue}
}),
806 new TestPolyStruct
[]{ new TestPolyStruct(Int32.MinValue)}
,
807 new TestPolyStruct
[]{new TestPolyStruct(new TestPolyStruct2('X', new Any(true)))}
,
808 new TestPolyStruct
[]{new TestPolyStruct(new TestPolyStruct2(new TestPolyStruct2('X', new Any(true)), "test"))}
,
809 new TestPolyStruct2
[]{new TestPolyStruct2("test", new TestPolyStruct2('X', new TestPolyStruct(new Any(true))))}
,
810 new TestPolyStruct2
[]{new TestPolyStruct2(new TestPolyStruct2('X', new Any(true)),new TestPolyStruct('X'))}
,
811 new TestPolyStruct
[][]{new TestPolyStruct[]{new TestPolyStruct('X')}}
,
812 new TestPolyStruct
[][]{new TestPolyStruct[]{new TestPolyStruct(new TestPolyStruct2('X', new Any(true)))}}
,
813 new TestPolyStruct
[][]{new TestPolyStruct[] {new TestPolyStruct(new TestPolyStruct2(new TestPolyStruct2('X',new Any(true)), "test"))}}
,
814 new TestPolyStruct2
[][]{new TestPolyStruct2[]{new TestPolyStruct2("test", new TestPolyStruct2('X',new TestPolyStruct(new Any(true))))}}
,
815 new TestPolyStruct2
[][]{new TestPolyStruct2[]{new TestPolyStruct2(new TestPolyStruct2('X',new Any(true)),new TestPolyStruct('X'))}}
818 //test the returned interface
824 public XCurrentContextChecker
getCurrentContextChecker()
826 return null; //TODO: not yet tested in CLI UNO
829 public TestPolyStruct
transportPolyBoolean(/*[in]*/TestPolyStruct arg
)
834 public void transportPolyHyper(/*[in][out]*/ ref TestPolyStruct arg
)
838 public void transportPolySequence(TestPolyStruct arg1
,
839 out TestPolyStruct arg2
)
844 public TestPolyStruct
getNullPolyBadEnum()
846 return new TestPolyStruct(unoidl
.test
.testtools
.bridgetest
.TestBadEnum
.M
);
849 public TestPolyStruct
getNullPolyLong()
851 return new TestPolyStruct();
854 public TestPolyStruct
getNullPolyString()
856 return new TestPolyStruct();
859 public TestPolyStruct
getNullPolyType()
861 return new TestPolyStruct();
864 public TestPolyStruct
getNullPolyAny()
866 return new TestPolyStruct();
869 public TestPolyStruct
getNullPolySequence()
871 return new TestPolyStruct();
874 public TestPolyStruct
getNullPolyEnum()
876 return new TestPolyStruct();
879 public TestPolyStruct
getNullPolyStruct()
881 return new TestPolyStruct();
884 public TestPolyStruct
getNullPolyInterface()
886 return new TestPolyStruct();
889 public XMulti
getMulti()
891 return new testtools
.bridgetest
.cli_cs
.Multi();
894 private static void checkEqual(int value, int argument
) {
895 if (argument
!= value) {
896 throw new CheckFailed(value + " != " + argument
);
900 private static void checkEqual(double value, double argument
) {
901 if (argument
!= value) {
902 throw new CheckFailed(value + " != " + argument
);
906 private static void checkEqual(string value, string argument
) {
907 if (argument
!= value) {
908 throw new CheckFailed(value + " != " + argument
);
912 public string testMulti(XMulti multi
)
915 checkEqual(0.0, multi
.att1
);
917 checkEqual(0.1, multi
.att1
);
918 checkEqual(11 * 1, multi
.fn11(1));
919 checkEqual("12" + "abc", multi
.fn12("abc"));
920 checkEqual(21 * 2, multi
.fn21(2));
921 checkEqual("22" + "de", multi
.fn22("de"));
922 checkEqual(0.0, multi
.att3
);
924 checkEqual(0.3, multi
.att3
);
925 checkEqual(31 * 3, multi
.fn31(3));
926 checkEqual("32" + "f", multi
.fn32("f"));
927 checkEqual(33, multi
.fn33());
928 checkEqual(41 * 4, multi
.fn41(4));
929 checkEqual(61 * 6, multi
.fn61(6));
930 checkEqual("62" + "", multi
.fn62(""));
931 checkEqual(71 * 7, multi
.fn71(7));
932 checkEqual("72" + "g", multi
.fn72("g"));
933 checkEqual(73, multi
.fn73());
934 } catch (CheckFailed f
) {
940 public int RaiseAttr1
942 get { throw new RuntimeException(); }
943 set { throw new IllegalArgumentException(); }
946 public int RaiseAttr2
948 get { throw new IllegalArgumentException(); }
949 set { throw new IllegalArgumentException(); }