diff --git a/+quantity/Discrete.m b/+quantity/Discrete.m index 7e34944b3abde7be2199a7d5656942c1b5ed9a93..5531740e7acdd4ceac184a4ba4e59154400c27bf 100644 --- a/+quantity/Discrete.m +++ b/+quantity/Discrete.m @@ -427,7 +427,12 @@ 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. + if isempty(obj(1).domain) gridNames = repmat({''}, length(newGrid)); else gridNames = {obj(1).domain.name}; diff --git a/+unittests/+quantity/testSymbolic.m b/+unittests/+quantity/testSymbolic.m index 3f64a68c6fca0afbb0762c33cff60b6bcc2985fa..4b6aa3e7e9c3018ba8fc72286db098d635498944 100644 --- a/+unittests/+quantity/testSymbolic.m +++ b/+unittests/+quantity/testSymbolic.m @@ -879,21 +879,31 @@ 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()); +%% 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()); @@ -960,6 +970,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)