diff --git a/+quantity/Discrete.m b/+quantity/Discrete.m index 31db4d82a9687d80f09b07656ac478b5989a06b7..54ed820f358d4e653fc4194297531008da958bee 100644 --- a/+quantity/Discrete.m +++ b/+quantity/Discrete.m @@ -427,7 +427,13 @@ classdef (InferiorClasses = {?quantity.Symbolic}) Discrete ... myDomain = misc.ensureIsCell(myDomain); newGrid = myDomain; - if obj(1).isConstant() + % Check if the object has a domain with a name: + % If there is no name, the object has an empty quantity.Domain, i.e., it is a + % constant. Then, the gridNames should be '' + % The check "isConstant" can not be used here, because it also returns true, if + % the constant value is defined over a domain. Then, the object has a domain + % with a name that should be used. + if isempty(obj(1).domain.name) gridNames = repmat({''}, length(newGrid)); else gridNames = {obj(1).domain.name}; diff --git a/+unittests/+quantity/testSymbolic.m b/+unittests/+quantity/testSymbolic.m index 87b447ca0367e560a8bdab3331dac98404d447a7..b4ed478d8796aec426470956a7faae9d2d85d50c 100644 --- a/+unittests/+quantity/testSymbolic.m +++ b/+unittests/+quantity/testSymbolic.m @@ -853,22 +853,32 @@ testCase.verifyEqual(on( - fDisc), on(-f)); end function testConstantValues(testCase) -%% +%% evaluation of a constant on the same grid syms z myDomain = quantity.Domain.defaultDomain(4, "z"); q = quantity.Symbolic(magic(3), myDomain); -%% magic7 = magic(3); magic700 = zeros(4, 3, 3); for k = 1:q(1).domain.gridLength() magic700(k, :,:) = magic7; end -%% testCase.verifyEqual(magic700, q.on()); testCase.verifyTrue(q.isConstant()); +%% evaluation of a constant on a different grid +myDomain2 = quantity.Domain.defaultDomain(7, "z"); +magic7 = magic(3); +magic700 = zeros(myDomain2.n, 3, 3); +for k = 1:myDomain2.n + magic700(k, :,:) = magic7; +end +q.on(myDomain2); + +testCase.verifyEqual(magic700, q.on(myDomain2)); + +%% p = quantity.Symbolic([0 0 0 0 z], myDomain); testCase.verifyFalse(p.isConstant()); @@ -935,6 +945,9 @@ Q2D = quantity.Symbolic(magic(2), [Z, Zeta]); %% verifyEqual(testCase, shiftdim(Q.on(), 1), magic(2)) verifyEqual(testCase, shiftdim(Q2D.on(), 2), magic(2)) + +%% test the evaluation on numeric grids +verifyEqual(testCase, shiftdim(Q.on(1), 1), magic(2)) end function testSize(testCase)