offapi/org/libreoffice/embindtest/Struct.idl |   23 +-
 unotest/source/embindtest/embindtest.cxx     |  306 +++++++++++++++++++++++++--
 unotest/source/embindtest/embindtest.js      |  218 ++++++++++++++++---
 3 files changed, 492 insertions(+), 55 deletions(-)

New commits:
commit 0bf2e317ac34512b348dcf0e7d9a8c10a47d6aef
Author:     Stephan Bergmann <stephan.bergm...@allotropia.de>
AuthorDate: Tue Jul 30 11:08:48 2024 +0200
Commit:     Stephan Bergmann <stephan.bergm...@allotropia.de>
CommitDate: Tue Jul 30 14:15:58 2024 +0200

    More exhaustive org.libreoffice.embindtest.Struct
    
    Change-Id: I91085ef8cd7cd80852c0d0ab4f87fd3226a10a00
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171236
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <stephan.bergm...@allotropia.de>

diff --git a/offapi/org/libreoffice/embindtest/Struct.idl 
b/offapi/org/libreoffice/embindtest/Struct.idl
index b62d917256c6..a24f53374e65 100644
--- a/offapi/org/libreoffice/embindtest/Struct.idl
+++ b/offapi/org/libreoffice/embindtest/Struct.idl
@@ -10,10 +10,25 @@
 module org { module libreoffice { module embindtest {
 
 struct Struct {
-    long m1;
-    double m2;
-    string m3;
-    any m4;
+    boolean m1;
+    byte m2;
+    short m3;
+    unsigned short m4;
+    long m5;
+    unsigned long m6;
+    hyper m7;
+    unsigned hyper m8;
+    float m9;
+    double m10;
+    char m11;
+    string m12;
+    type m13;
+    any m14;
+    sequence<string> m15;
+    Enum m16;
+    StructLong m17;
+    Template<any, StructString> m18;
+    com::sun::star::uno::XInterface m19;
 };
 
 }; }; };
diff --git a/unotest/source/embindtest/embindtest.cxx 
b/unotest/source/embindtest/embindtest.cxx
index 3883c031755c..963939fb71b5 100644
--- a/unotest/source/embindtest/embindtest.cxx
+++ b/unotest/source/embindtest/embindtest.cxx
@@ -116,14 +116,53 @@ class Test : public 
cppu::WeakImplHelper<org::libreoffice::embindtest::XTest>
 
     org::libreoffice::embindtest::Struct SAL_CALL getStruct() override
     {
-        return { -123456, 100.5, u"hä"_ustr, css::uno::Any(true) };
+        return { true,
+                 -12,
+                 -1234,
+                 54321,
+                 -123456,
+                 3456789012,
+                 -123456789,
+                 9876543210,
+                 -10.25,
+                 100.5,
+                 u'Ö',
+                 u"hä"_ustr,
+                 cppu::UnoType<sal_Int32>::get(),
+                 css::uno::Any(sal_Int32(-123456)),
+                 { u"foo"_ustr, u"barr"_ustr, u"bazzz"_ustr },
+                 org::libreoffice::embindtest::Enum_E_2,
+                 { -123456 },
+                 { { u"foo"_ustr }, -123456, 
css::uno::Any(sal_Int32(-123456)), { u"barr"_ustr } },
+                 static_cast<OWeakObject*>(this) };
     }
 
     sal_Bool SAL_CALL isStruct(org::libreoffice::embindtest::Struct const& 
value) override
     {
         return value
-               == org::libreoffice::embindtest::Struct{ -123456, 100.5, 
u"hä"_ustr,
-                                                        css::uno::Any(true) };
+               == org::libreoffice::embindtest::Struct{ true,
+                                                        -12,
+                                                        -1234,
+                                                        54321,
+                                                        -123456,
+                                                        3456789012,
+                                                        -123456789,
+                                                        9876543210,
+                                                        -10.25,
+                                                        100.5,
+                                                        u'Ö',
+                                                        u"hä"_ustr,
+                                                        
cppu::UnoType<sal_Int32>::get(),
+                                                        
css::uno::Any(sal_Int32(-123456)),
+                                                        { u"foo"_ustr, 
u"barr"_ustr,
+                                                          u"bazzz"_ustr },
+                                                        
org::libreoffice::embindtest::Enum_E_2,
+                                                        { -123456 },
+                                                        { { u"foo"_ustr },
+                                                          -123456,
+                                                          
css::uno::Any(sal_Int32(-123456)),
+                                                          { u"barr"_ustr } },
+                                                        
static_cast<OWeakObject*>(this) };
     }
 
     org::libreoffice::embindtest::StructLong SAL_CALL getStructLong() override
@@ -314,16 +353,56 @@ class Test : public 
cppu::WeakImplHelper<org::libreoffice::embindtest::XTest>
 
     css::uno::Any SAL_CALL getAnyStruct() override
     {
-        return css::uno::Any(org::libreoffice::embindtest::Struct{ -123456, 
100.5, u"hä"_ustr,
-                                                                   
css::uno::Any(true) });
+        return css::uno::Any(org::libreoffice::embindtest::Struct{
+            true,
+            -12,
+            -1234,
+            54321,
+            -123456,
+            3456789012,
+            -123456789,
+            9876543210,
+            -10.25,
+            100.5,
+            u'Ö',
+            u"hä"_ustr,
+            cppu::UnoType<sal_Int32>::get(),
+            css::uno::Any(sal_Int32(-123456)),
+            { u"foo"_ustr, u"barr"_ustr, u"bazzz"_ustr },
+            org::libreoffice::embindtest::Enum_E_2,
+            { -123456 },
+            { { u"foo"_ustr }, -123456, css::uno::Any(sal_Int32(-123456)), { 
u"barr"_ustr } },
+            static_cast<OWeakObject*>(this) });
     }
 
     sal_Bool SAL_CALL isAnyStruct(css::uno::Any const& value) override
     {
         return value.getValueType() == 
cppu::UnoType<org::libreoffice::embindtest::Struct>::get()
                && 
*o3tl::forceAccess<org::libreoffice::embindtest::Struct>(value)
-                      == org::libreoffice::embindtest::Struct{ -123456, 100.5, 
u"hä"_ustr,
-                                                               
css::uno::Any(true) };
+                      == org::libreoffice::embindtest::Struct{
+                             true,
+                             -12,
+                             -1234,
+                             54321,
+                             -123456,
+                             3456789012,
+                             -123456789,
+                             9876543210,
+                             -10.25,
+                             100.5,
+                             u'Ö',
+                             u"hä"_ustr,
+                             cppu::UnoType<sal_Int32>::get(),
+                             css::uno::Any(sal_Int32(-123456)),
+                             { u"foo"_ustr, u"barr"_ustr, u"bazzz"_ustr },
+                             org::libreoffice::embindtest::Enum_E_2,
+                             { -123456 },
+                             { { u"foo"_ustr },
+                               -123456,
+                               css::uno::Any(sal_Int32(-123456)),
+                               { u"barr"_ustr } },
+                             static_cast<OWeakObject*>(this)
+                         };
     }
 
     css::uno::Any SAL_CALL getAnyException() override
@@ -540,9 +619,72 @@ class Test : public 
cppu::WeakImplHelper<org::libreoffice::embindtest::XTest>
 
     css::uno::Sequence<org::libreoffice::embindtest::Struct> SAL_CALL 
getSequenceStruct() override
     {
-        return { { -123456, -100.5, u"foo"_ustr, css::uno::Any() },
-                 { 1, 1.25, u"barr"_ustr, css::uno::Any(true) },
-                 { 123456, 100.75, u"bazzz"_ustr, css::uno::Any(u"buzzz"_ustr) 
} };
+        return {
+            { true,
+              -12,
+              -1234,
+              1,
+              -123456,
+              1,
+              -123456789,
+              1,
+              -10.25,
+              -100.5,
+              'a',
+              u"hä"_ustr,
+              cppu::UnoType<sal_Int32>::get(),
+              css::uno::Any(sal_Int32(-123456)),
+              {},
+              org::libreoffice::embindtest::Enum_E_2,
+              { -123456 },
+              { { u"foo"_ustr }, -123456, css::uno::Any(sal_Int32(-123456)), { 
u"barr"_ustr } },
+              static_cast<OWeakObject*>(this) },
+            { true,
+              1,
+              1,
+              10,
+              1,
+              10,
+              1,
+              10,
+              1.5,
+              1.25,
+              'B',
+              u"barr"_ustr,
+              cppu::UnoType<void>::get(),
+              css::uno::Any(),
+              { u"foo"_ustr, u"barr"_ustr },
+              org::libreoffice::embindtest::Enum_E3,
+              { 1 },
+              { { u"baz"_ustr }, 1, css::uno::Any(), { u"foo"_ustr } },
+              nullptr },
+            { false,
+              12,
+              1234,
+              54321,
+              123456,
+              3456789012,
+              123456789,
+              9876543210,
+              10.75,
+              100.75,
+              u'Ö',
+              u"bazzz"_ustr,
+              
cppu::UnoType<css::uno::Sequence<org::libreoffice::embindtest::Enum>>::get(),
+              
css::uno::Any(css::uno::Sequence<org::libreoffice::embindtest::Enum>{
+                  org::libreoffice::embindtest::Enum_E_2, 
org::libreoffice::embindtest::Enum_E3,
+                  org::libreoffice::embindtest::Enum_E_10 }),
+              { u"baz"_ustr },
+              org::libreoffice::embindtest::Enum_E_10,
+              { 123456 },
+              { { u"barr"_ustr },
+                123456,
+                
css::uno::Any(css::uno::Sequence<org::libreoffice::embindtest::Enum>{
+                    org::libreoffice::embindtest::Enum_E_2, 
org::libreoffice::embindtest::Enum_E3,
+                    org::libreoffice::embindtest::Enum_E_10 }),
+                { u"bazz"_ustr } },
+              static_cast<OWeakObject*>(this) }
+        };
     }
 
     sal_Bool SAL_CALL
@@ -550,9 +692,76 @@ class Test : public 
cppu::WeakImplHelper<org::libreoffice::embindtest::XTest>
     {
         return value
                == css::uno::Sequence<org::libreoffice::embindtest::Struct>{
-                      { -123456, -100.5, u"foo"_ustr, css::uno::Any() },
-                      { 1, 1.25, u"barr"_ustr, css::uno::Any(true) },
-                      { 123456, 100.75, u"bazzz"_ustr, 
css::uno::Any(u"buzzz"_ustr) }
+                      { true,
+                        -12,
+                        -1234,
+                        1,
+                        -123456,
+                        1,
+                        -123456789,
+                        1,
+                        -10.25,
+                        -100.5,
+                        'a',
+                        u"hä"_ustr,
+                        cppu::UnoType<sal_Int32>::get(),
+                        css::uno::Any(sal_Int32(-123456)),
+                        {},
+                        org::libreoffice::embindtest::Enum_E_2,
+                        { -123456 },
+                        { { u"foo"_ustr },
+                          -123456,
+                          css::uno::Any(sal_Int32(-123456)),
+                          { u"barr"_ustr } },
+                        static_cast<OWeakObject*>(this) },
+                      { true,
+                        1,
+                        1,
+                        10,
+                        1,
+                        10,
+                        1,
+                        10,
+                        1.5,
+                        1.25,
+                        'B',
+                        u"barr"_ustr,
+                        cppu::UnoType<void>::get(),
+                        css::uno::Any(),
+                        { u"foo"_ustr, u"barr"_ustr },
+                        org::libreoffice::embindtest::Enum_E3,
+                        { 1 },
+                        { { u"baz"_ustr }, 1, css::uno::Any(), { u"foo"_ustr } 
},
+                        nullptr },
+                      { false,
+                        12,
+                        1234,
+                        54321,
+                        123456,
+                        3456789012,
+                        123456789,
+                        9876543210,
+                        10.75,
+                        100.75,
+                        u'Ö',
+                        u"bazzz"_ustr,
+                        cppu::UnoType<
+                            
css::uno::Sequence<org::libreoffice::embindtest::Enum>>::get(),
+                        
css::uno::Any(css::uno::Sequence<org::libreoffice::embindtest::Enum>{
+                            org::libreoffice::embindtest::Enum_E_2,
+                            org::libreoffice::embindtest::Enum_E3,
+                            org::libreoffice::embindtest::Enum_E_10 }),
+                        { u"baz"_ustr },
+                        org::libreoffice::embindtest::Enum_E_10,
+                        { 123456 },
+                        { { u"barr"_ustr },
+                          123456,
+                          
css::uno::Any(css::uno::Sequence<org::libreoffice::embindtest::Enum>{
+                              org::libreoffice::embindtest::Enum_E_2,
+                              org::libreoffice::embindtest::Enum_E3,
+                              org::libreoffice::embindtest::Enum_E_10 }),
+                          { u"bazz"_ustr } },
+                        static_cast<OWeakObject*>(this) }
                   };
     }
 
@@ -592,7 +801,26 @@ class Test : public 
cppu::WeakImplHelper<org::libreoffice::embindtest::XTest>
         value14 = css::uno::Any(sal_Int32(-123456));
         value15 = { u"foo"_ustr, u"barr"_ustr, u"bazzz"_ustr };
         value16 = org::libreoffice::embindtest::Enum_E_2;
-        value17 = { -123456, 100.5, u"hä"_ustr, css::uno::Any(true) };
+        value17
+            = { true,
+                -12,
+                -1234,
+                54321,
+                -123456,
+                3456789012,
+                -123456789,
+                9876543210,
+                -10.25,
+                100.5,
+                u'Ö',
+                u"hä"_ustr,
+                cppu::UnoType<sal_Int32>::get(),
+                css::uno::Any(sal_Int32(-123456)),
+                { u"foo"_ustr, u"barr"_ustr, u"bazzz"_ustr },
+                org::libreoffice::embindtest::Enum_E_2,
+                { -123456 },
+                { { u"foo"_ustr }, -123456, css::uno::Any(sal_Int32(-123456)), 
{ u"barr"_ustr } },
+                static_cast<OWeakObject*>(this) };
         value18 = this;
     }
 
@@ -782,8 +1010,29 @@ private:
         {
             auto const val = ifcCpp->getStruct();
             assert((val
-                    == org::libreoffice::embindtest::Struct{ -123456, 100.5, 
u"hä"_ustr,
-                                                             
css::uno::Any(true) }));
+                    == org::libreoffice::embindtest::Struct{
+                           true,
+                           -12,
+                           -1234,
+                           54321,
+                           -123456,
+                           3456789012,
+                           -123456789,
+                           9876543210,
+                           -10.25,
+                           100.5,
+                           u'Ö',
+                           u"hä"_ustr,
+                           cppu::UnoType<sal_Int32>::get(),
+                           css::uno::Any(sal_Int32(-123456)),
+                           { u"foo"_ustr, u"barr"_ustr, u"bazzz"_ustr },
+                           org::libreoffice::embindtest::Enum_E_2,
+                           { -123456 },
+                           { { u"foo"_ustr },
+                             -123456,
+                             css::uno::Any(sal_Int32(-123456)),
+                             { u"barr"_ustr } },
+                           ifcCpp }));
             auto const ok = ifcCpp->isStruct(val);
             assert(ok == css::uno::Any(true));
         }
@@ -857,8 +1106,29 @@ private:
                     == css::uno::Sequence<OUString>{ u"foo"_ustr, 
u"barr"_ustr, u"bazzz"_ustr }));
             assert(value16 == org::libreoffice::embindtest::Enum_E_2);
             assert((value17
-                    == org::libreoffice::embindtest::Struct{ -123456, 100.5, 
u"hä"_ustr,
-                                                             
css::uno::Any(true) }));
+                    == org::libreoffice::embindtest::Struct{
+                           true,
+                           -12,
+                           -1234,
+                           54321,
+                           -123456,
+                           3456789012,
+                           -123456789,
+                           9876543210,
+                           -10.25,
+                           100.5,
+                           u'Ö',
+                           u"hä"_ustr,
+                           cppu::UnoType<sal_Int32>::get(),
+                           css::uno::Any(sal_Int32(-123456)),
+                           { u"foo"_ustr, u"barr"_ustr, u"bazzz"_ustr },
+                           org::libreoffice::embindtest::Enum_E_2,
+                           { -123456 },
+                           { { u"foo"_ustr },
+                             -123456,
+                             css::uno::Any(sal_Int32(-123456)),
+                             { u"barr"_ustr } },
+                           ifcCpp }));
             assert(value18 == ifcCpp);
         }
         try
diff --git a/unotest/source/embindtest/embindtest.js 
b/unotest/source/embindtest/embindtest.js
index 57720b6baaa6..2242e5f81a8f 100644
--- a/unotest/source/embindtest/embindtest.js
+++ b/unotest/source/embindtest/embindtest.js
@@ -102,12 +102,35 @@ Module.uno_init.then(function() {
     {
         let v = test.getStruct();
         console.log(v);
-        console.assert(v.m1 === -123456);
-        console.assert(v.m2 === 100.5);
-        console.assert(v.m3 === 'hä');
-        console.assert(v.m4.get() === true);
+        console.assert(v.m1 === 1); //TODO: true
+        console.assert(v.m2 === -12);
+        console.assert(v.m3 === -1234);
+        console.assert(v.m4 === 54321);
+        console.assert(v.m5 === -123456);
+        console.assert(v.m6 === 3456789012);
+        console.assert(v.m7 === -123456789n);
+        console.assert(v.m8 === 9876543210n);
+        console.assert(v.m9 === -10.25);
+        console.assert(v.m10 === 100.5);
+        console.assert(v.m11 === 'Ö');
+        console.assert(v.m12 === 'hä');
+        console.assert(v.m13.toString() === 'long');
+        console.assert(v.m14.get() === -123456);
+        console.assert(v.m15.size() === 3);
+        console.assert(v.m15.get(0) === 'foo');
+        console.assert(v.m15.get(1) === 'barr');
+        console.assert(v.m15.get(2) === 'bazzz');
+        console.assert(v.m16 === 
Module.uno.org.libreoffice.embindtest.Enum.E_2);
+        console.assert(v.m17.m === -123456);
+        console.assert(v.m18.m1.m === 'foo');
+        console.assert(v.m18.m2 === -123456);
+        console.assert(v.m18.m3.get() === -123456);
+        console.assert(v.m18.m4.m === 'barr');
+        console.assert(Module.sameUnoObject(v.m19, test));
         console.assert(test.isStruct(v));
-        v.m4.delete();
+        v.m14.delete();
+        v.m15.delete();
+        v.m18.m3.delete();
     }
     {
         let v = test.getTemplate();
@@ -291,19 +314,50 @@ Module.uno_init.then(function() {
     {
         let v = test.getAnyStruct();
         console.log(v);
-        console.assert(v.get().m1 === -123456);
-        console.assert(v.get().m2 === 100.5);
-        console.assert(v.get().m3 === 'hä');
-        console.assert(v.get().m4.get() === true);
+        console.assert(v.get().m1 === 1); //TODO: true
+        console.assert(v.get().m2 === -12);
+        console.assert(v.get().m3 === -1234);
+        console.assert(v.get().m4 === 54321);
+        console.assert(v.get().m5 === -123456);
+        console.assert(v.get().m6 === 3456789012);
+        console.assert(v.get().m7 === -123456789n);
+        console.assert(v.get().m8 === 9876543210n);
+        console.assert(v.get().m9 === -10.25);
+        console.assert(v.get().m10 === 100.5);
+        console.assert(v.get().m11 === 'Ö');
+        console.assert(v.get().m12 === 'hä');
+        console.assert(v.get().m13.toString() === 'long');
+        console.assert(v.get().m14.get() === -123456);
+        console.assert(v.get().m15.size() === 3);
+        console.assert(v.get().m15.get(0) === 'foo');
+        console.assert(v.get().m15.get(1) === 'barr');
+        console.assert(v.get().m15.get(2) === 'bazzz');
+        console.assert(v.get().m16 === 
Module.uno.org.libreoffice.embindtest.Enum.E_2);
+        console.assert(v.get().m17.m === -123456);
+        console.assert(v.get().m18.m1.m === 'foo');
+        console.assert(v.get().m18.m2 === -123456);
+        console.assert(v.get().m18.m3.get() === -123456);
+        console.assert(v.get().m18.m4.m === 'barr');
+        console.assert(Module.sameUnoObject(v.get().m19, test));
         console.assert(test.isAnyStruct(v));
-        v.get().m4.delete();
+        v.get().m14.delete();
+        v.get().m15.delete();
+        v.get().m18.m3.delete();
         v.delete();
-        let m4 = new Module.uno_Any(Module.uno_Type.Boolean(), true);
+        let m14 = new Module.uno_Any(Module.uno_Type.Long(), -123456);
+        let m15 = new Module.uno_Sequence_string(["foo", "barr", "bazzz"]);
+        let m18m3 = new Module.uno_Any(Module.uno_Type.Long(), -123456);
         let a = new Module.uno_Any(
             Module.uno_Type.Struct('org.libreoffice.embindtest.Struct'),
-            {m1: -123456, m2: 100.5, m3: 'hä', m4});
+            {m1: true, m2: -12, m3: -1234, m4: 54321, m5: -123456, m6: 
3456789012, m7: -123456789n,
+             m8: 9876543210n, m9: -10.25, m10: 100.5, m11: 'Ö', m12: 'hä',
+             m13: Module.uno_Type.Long(), m14, m15,
+             m16: Module.uno.org.libreoffice.embindtest.Enum.E_2, m17: {m: 
-123456},
+             m18: {m1: {m: 'foo'}, m2: -123456, m3: m18m3, m4: {m: 'barr'}}, 
m19: test});
         console.assert(test.isAnyStruct(a));
-        m4.delete();
+        m14.delete();
+        m15.delete();
+        m18m3.delete();
         a.delete();
     }
     {
@@ -522,22 +576,97 @@ Module.uno_init.then(function() {
         let v = test.getSequenceStruct();
         console.log(v);
         console.assert(v.size() === 3);
-        console.assert(v.get(0).m1 === -123456);
-        console.assert(v.get(0).m2 === -100.5);
-        console.assert(v.get(0).m3 === 'foo');
-        console.assert(v.get(0).m4.get() === undefined);
-        console.assert(v.get(1).m1 === 1);
-        console.assert(v.get(1).m2 === 1.25);
-        console.assert(v.get(1).m3 === 'barr');
-        console.assert(v.get(1).m4.get() === true);
-        console.assert(v.get(2).m1 === 123456);
-        console.assert(v.get(2).m2 === 100.75);
-        console.assert(v.get(2).m3 === 'bazzz');
-        console.assert(v.get(2).m4.get() === 'buzzz');
+        console.assert(v.get(0).m1 === 1); //TODO: true
+        console.assert(v.get(0).m2 === -12);
+        console.assert(v.get(0).m3 === -1234);
+        console.assert(v.get(0).m4 === 1);
+        console.assert(v.get(0).m5 === -123456);
+        console.assert(v.get(0).m6 === 1);
+        console.assert(v.get(0).m7 === -123456789n);
+        console.assert(v.get(0).m8 === 1n);
+        console.assert(v.get(0).m9 === -10.25);
+        console.assert(v.get(0).m10 === -100.5);
+        console.assert(v.get(0).m11 === 'a');
+        console.assert(v.get(0).m12 === 'hä');
+        console.assert(v.get(0).m13.toString() === 'long');
+        console.assert(v.get(0).m14.get() === -123456);
+        console.assert(v.get(0).m15.size() === 0);
+        console.assert(v.get(0).m16 === 
Module.uno.org.libreoffice.embindtest.Enum.E_2);
+        console.assert(v.get(0).m17.m === -123456);
+        console.assert(v.get(0).m18.m1.m === 'foo');
+        console.assert(v.get(0).m18.m2 === -123456);
+        console.assert(v.get(0).m18.m3.get() === -123456);
+        console.assert(v.get(0).m18.m4.m === 'barr');
+        console.assert(Module.sameUnoObject(v.get(0).m19, test));
+        console.assert(v.get(1).m1 === 1); //TODO: true
+        console.assert(v.get(1).m2 === 1);
+        console.assert(v.get(1).m3 === 1);
+        console.assert(v.get(1).m4 === 10);
+        console.assert(v.get(1).m5 === 1);
+        console.assert(v.get(1).m6 === 10);
+        console.assert(v.get(1).m7 === 1n);
+        console.assert(v.get(1).m8 === 10n);
+        console.assert(v.get(1).m9 === 1.5);
+        console.assert(v.get(1).m10 === 1.25);
+        console.assert(v.get(1).m11 === 'B');
+        console.assert(v.get(1).m12 === 'barr');
+        console.assert(v.get(1).m13.toString() === 'void');
+        console.assert(v.get(1).m14.get() === undefined);
+        console.assert(v.get(1).m15.size() === 2);
+        console.assert(v.get(1).m15.get(0) === 'foo');
+        console.assert(v.get(1).m15.get(1) === 'barr');
+        console.assert(v.get(1).m16 === 
Module.uno.org.libreoffice.embindtest.Enum.E3);
+        console.assert(v.get(1).m17.m === 1);
+        console.assert(v.get(1).m18.m1.m === 'baz');
+        console.assert(v.get(1).m18.m2 === 1);
+        console.assert(v.get(1).m18.m3.get() === undefined);
+        console.assert(v.get(1).m18.m4.m === 'foo');
+        console.assert(v.get(1).m19 === null);
+        console.assert(v.get(2).m1 === 0); //TODO: false
+        console.assert(v.get(2).m2 === 12);
+        console.assert(v.get(2).m3 === 1234);
+        console.assert(v.get(2).m4 === 54321);
+        console.assert(v.get(2).m5 === 123456);
+        console.assert(v.get(2).m6 === 3456789012);
+        console.assert(v.get(2).m7 === 123456789n);
+        console.assert(v.get(2).m8 === 9876543210n);
+        console.assert(v.get(2).m9 === 10.75);
+        console.assert(v.get(2).m10 === 100.75);
+        console.assert(v.get(2).m11 === 'Ö');
+        console.assert(v.get(2).m12 === 'bazzz');
+        console.assert(v.get(2).m13.toString() === 
'[]org.libreoffice.embindtest.Enum');
+        console.assert(v.get(2).m14.get().size() === 3);
+        console.assert(
+            v.get(2).m14.get().get(0) === 
Module.uno.org.libreoffice.embindtest.Enum.E_2);
+        console.assert(v.get(2).m14.get().get(1) === 
Module.uno.org.libreoffice.embindtest.Enum.E3);
+        console.assert(
+            v.get(2).m14.get().get(2) === 
Module.uno.org.libreoffice.embindtest.Enum.E_10);
+        console.assert(v.get(2).m15.size() === 1);
+        console.assert(v.get(2).m15.get(0) === 'baz');
+        console.assert(v.get(2).m16 === 
Module.uno.org.libreoffice.embindtest.Enum.E_10);
+        console.assert(v.get(2).m17.m === 123456);
+        console.assert(v.get(2).m18.m1.m === 'barr');
+        console.assert(v.get(2).m18.m2 === 123456);
+        console.assert(v.get(2).m18.m3.get().size() === 3);
+        console.assert(
+            v.get(2).m18.m3.get().get(0) === 
Module.uno.org.libreoffice.embindtest.Enum.E_2);
+        console.assert(
+            v.get(2).m18.m3.get().get(1) === 
Module.uno.org.libreoffice.embindtest.Enum.E3);
+        console.assert(
+            v.get(2).m18.m3.get().get(2) === 
Module.uno.org.libreoffice.embindtest.Enum.E_10);
+        console.assert(v.get(2).m18.m4.m === 'bazz');
+        console.assert(Module.sameUnoObject(v.get(2).m19, test));
         console.assert(test.isSequenceStruct(v));
-        v.get(0).m4.delete();
-        v.get(1).m4.delete();
-        v.get(2).m4.delete();
+        v.get(0).m14.delete();
+        v.get(0).m15.delete();
+        v.get(0).m18.m3.delete();
+        v.get(1).m14.delete();
+        v.get(1).m15.delete();
+        v.get(1).m18.m3.delete();
+        v.get(2).m14.delete();
+        v.get(2).m15.delete();
+        v.get(2).m18.m3.get().delete();
+        v.get(2).m18.m3.delete();
         v.delete();
     }
     {
@@ -609,10 +738,31 @@ Module.uno_init.then(function() {
         console.assert(v15.val.get(1) === 'barr');
         console.assert(v15.val.get(2) === 'bazzz');
         console.assert(v16.val === 
Module.uno.org.libreoffice.embindtest.Enum.E_2);
-        console.assert(v17.val.m1 === -123456);
-        console.assert(v17.val.m2 === 100.5);
-        console.assert(v17.val.m3 === 'hä');
-        console.assert(v17.val.m4.get() === true);
+        console.assert(v17.val.m1 === 1); //TODO: true
+        console.assert(v17.val.m2 === -12);
+        console.assert(v17.val.m3 === -1234);
+        console.assert(v17.val.m4 === 54321);
+        console.assert(v17.val.m5 === -123456);
+        console.assert(v17.val.m6 === 3456789012);
+        console.assert(v17.val.m7 === -123456789n);
+        console.assert(v17.val.m8 === 9876543210n);
+        console.assert(v17.val.m9 === -10.25);
+        console.assert(v17.val.m10 === 100.5);
+        console.assert(v17.val.m11 === 'Ö');
+        console.assert(v17.val.m12 === 'hä');
+        console.assert(v17.val.m13.toString() === 'long');
+        console.assert(v17.val.m14.get() === -123456);
+        console.assert(v17.val.m15.size() === 3);
+        console.assert(v17.val.m15.get(0) === 'foo');
+        console.assert(v17.val.m15.get(1) === 'barr');
+        console.assert(v17.val.m15.get(2) === 'bazzz');
+        console.assert(v17.val.m16 === 
Module.uno.org.libreoffice.embindtest.Enum.E_2);
+        console.assert(v17.val.m17.m === -123456);
+        console.assert(v17.val.m18.m1.m === 'foo');
+        console.assert(v17.val.m18.m2 === -123456);
+        console.assert(v17.val.m18.m3.get() === -123456);
+        console.assert(v17.val.m18.m4.m === 'barr');
+        console.assert(Module.sameUnoObject(v17.val.m19, test));
         console.assert(Module.sameUnoObject(v18.val, test));
         v1.delete();
         v2.delete();
@@ -632,7 +782,9 @@ Module.uno_init.then(function() {
         v15.val.delete();
         v15.delete();
         v16.delete();
-        v17.val.m4.delete();
+        v17.val.m14.delete();
+        v17.val.m15.delete();
+        v17.val.m18.m3.delete();
         v17.delete();
         v18.delete();
     }

Reply via email to