mirror of
https://github.com/qmlnet/qmlnet.git
synced 2026-05-22 06:05:26 -06:00
Verified we can call forEach.
This commit is contained in:
parent
3e1c7de378
commit
37158962e5
8 changed files with 30 additions and 8 deletions
|
|
@ -21,6 +21,8 @@ struct NetArray : Object
|
|||
V4_OBJECT2(NetArray, Object)
|
||||
V4_NEEDS_DESTROY
|
||||
Q_MANAGED_TYPE(ArrayObject)
|
||||
V4_PROTOTYPE(arrayPrototype)
|
||||
|
||||
static ReturnedValue create(ExecutionEngine *engine, NetValue* netValue);
|
||||
|
||||
static ReturnedValue method_length(const FunctionObject *b, const Value *thisObject, const Value *argv, int argc);
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ QSharedPointer<NetTypeArrayFacade> NetTypeArrayFacade::fromType(QSharedPointer<N
|
|||
}
|
||||
|
||||
|
||||
int NetTypeArrayFacade::getLength(QSharedPointer<NetReference>)
|
||||
uint NetTypeArrayFacade::getLength(QSharedPointer<NetReference>)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ public:
|
|||
NetTypeArrayFacade();
|
||||
virtual ~NetTypeArrayFacade() {}
|
||||
static QSharedPointer<NetTypeArrayFacade> fromType(QSharedPointer<NetTypeInfo> type);
|
||||
virtual int getLength(QSharedPointer<NetReference> reference);
|
||||
virtual uint getLength(QSharedPointer<NetReference> reference);
|
||||
virtual QSharedPointer<NetVariant> getIndexed(QSharedPointer<NetReference> reference, int index);
|
||||
virtual void setIndexed(QSharedPointer<NetReference> reference, int index, QSharedPointer<NetVariant> value);
|
||||
};
|
||||
|
|
|
|||
|
|
@ -38,11 +38,11 @@ bool NetTypeArrayFacade_Array::isIncomplete()
|
|||
return _isIncomplete;
|
||||
}
|
||||
|
||||
int NetTypeArrayFacade_Array::getLength(QSharedPointer<NetReference> reference)
|
||||
uint NetTypeArrayFacade_Array::getLength(QSharedPointer<NetReference> reference)
|
||||
{
|
||||
QSharedPointer<NetVariant> result = QSharedPointer<NetVariant>(new NetVariant());
|
||||
readProperty(_lengthProperty, reference, result);
|
||||
return result->getInt();
|
||||
return static_cast<uint>(result->getInt());
|
||||
}
|
||||
|
||||
QSharedPointer<NetVariant> NetTypeArrayFacade_Array::getIndexed(QSharedPointer<NetReference> reference, int index)
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ class NetTypeArrayFacade_Array : public NetTypeArrayFacade
|
|||
public:
|
||||
NetTypeArrayFacade_Array(QSharedPointer<NetTypeInfo> type);
|
||||
bool isIncomplete();
|
||||
int getLength(QSharedPointer<NetReference> reference);
|
||||
uint getLength(QSharedPointer<NetReference> reference);
|
||||
QSharedPointer<NetVariant> getIndexed(QSharedPointer<NetReference> reference, int index);
|
||||
void setIndexed(QSharedPointer<NetReference> reference, int index, QSharedPointer<NetVariant> value);
|
||||
private:
|
||||
|
|
|
|||
|
|
@ -71,5 +71,26 @@ namespace Qml.Net.Tests.Qml
|
|||
Mock.Verify(x => x.GetArray(), Times.Once);
|
||||
array[2].Should().Be(234);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Can_forEach()
|
||||
{
|
||||
var array = new[] {3, 4, 7};
|
||||
Mock.Setup(x => x.GetArray()).Returns(array);
|
||||
|
||||
RunQmlTest(
|
||||
"test",
|
||||
@"
|
||||
var array = Net.toJsArray(test.getArray())
|
||||
array.forEach(function(value) {
|
||||
test.test(value)
|
||||
})
|
||||
");
|
||||
|
||||
Mock.Verify(x => x.GetArray(), Times.Once);
|
||||
Mock.Verify(x => x.Test(3), Times.Once);
|
||||
Mock.Verify(x => x.Test(4), Times.Once);
|
||||
Mock.Verify(x => x.Test(7), Times.Once);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -265,7 +265,7 @@ namespace Qml.Net.Tests.Types
|
|||
type.GetStaticMethod(0).MethodName.Should().Be("StaticMethod");
|
||||
}
|
||||
|
||||
public class TestType12
|
||||
public class TestType13
|
||||
{
|
||||
public string[] Property { get; set; }
|
||||
}
|
||||
|
|
@ -273,7 +273,7 @@ namespace Qml.Net.Tests.Types
|
|||
[Fact]
|
||||
public void Can_detect_array_type()
|
||||
{
|
||||
var type = NetTypeManager.GetTypeInfo<TestType12>();
|
||||
var type = NetTypeManager.GetTypeInfo<TestType13>();
|
||||
type.EnsureLoaded();
|
||||
var property = type.GetProperty(0);
|
||||
var returnType = property.ReturnType;
|
||||
|
|
|
|||
|
|
@ -49,7 +49,6 @@ namespace Qml.Net.Internal
|
|||
|
||||
type.IsArray = typeInfo.IsArray;
|
||||
|
||||
foreach (var methodInfo in typeInfo.GetMethods(BindingFlags.Public | BindingFlags.Instance))
|
||||
foreach (var methodInfo in typeInfo.GetMethods(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static))
|
||||
{
|
||||
if (methodInfo.IsGenericMethod) continue; // No generics supported.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue