Commit Graph
46 Commits
Author SHA1 Message Date
Andreas Heinisch 0426748927 tdf#136755, tdf#124008 - delete the variable beforehand REDIM
If an array of objects is passed as an argument to ReDim, delete the
variable beforehand, otherwise the construction of the new variable
fails, because the old one is still on the stack.

Change-Id: Ic863a36f5f2aca658df369f95d275aa287edf795
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106832
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
2021-01-25 07:57:59 +01:00
Andreas Heinisch 48d46bcc90 tdf#85371 - grant write access to the method used as a variable
During the creation of the parameter list of a method, explicitly grant
write access to the method which will used as a variable. Otherwise, the
name of the method can't be used in certain statements, i.e., index in a
for loop or as a dimension in ReDim.

Change-Id: I3e4c49c21fd3345d5ddd69bc31a5823b5de5b8e7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104696
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-10-30 05:12:25 +01:00
Andreas Heinisch d6b7cc3f7c tdf#123025 - ReDim Preserve fails if array is filled by Split
The Split function sets the datatype of the array to SbxVARIANT instead
of SbxSTRING preventing any subsequent assignments to the array and to
the elements itself.

Change-Id: Ib099eee7bfd222c97520ac8970352bcf2b44bc3e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104039
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-10-16 12:31:02 +02:00
Andreas Heinisch 698e5d5418 tdf#123025 - fixed broken tests for cverr method
Change-Id: I44eb44107a24207764da24b4e01b407570342013
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103956
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-10-06 17:17:55 +02:00
Alain Romedenne c3c8d2d671 tdf#136112 Unit test for Date() Basic function
Change-Id: Id6660627e766c6dcd107c3ee483bacb046cae7bf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102123
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-09-08 17:18:29 +02:00
Andreas Heinisch 40031dd453 tdf#54912 - with option base arrays should start at index 1
Using option base, every array should start at index 1. Previously, it
needed option VBASupport too. Without option compatible, the upper bound
of an array is increased as well in order to preserve the specified
size.

Change-Id: I52885f14914a4636b98258aa428c2123f62482a3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101269
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-09-01 09:28:46 +02:00
Andreas Heinisch 781b6ac998 tdf#136143 - reset SbxFlagBits::Fixed SbiRuntime::StepPARAM
In order to prevent type conversion errors, reset a variable of type
SbxERROR to not fixed. Variable will be of type SbxERROR, but can be
converted to any requested type.

Change-Id: Ic856376e3f8232577a5e894a2adb2545c8723033
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/101419
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-08-27 15:49:16 +02:00
Mike Kaganski e67ffd5a62 tdf#135470: Fix checks
The check should prevent error in case when the variable has
wrong type. IsObject returns false e.g. for arrays, which are
valid iterables. So proper check is using GetFullType, which
will give SbxOBJECT for any variable for which GetObject does
not set error.

"Next" should also generate an error for uninitialized loops.

Regression after 5760c94b88

Change-Id: Ib58e1cc76ef63aa1ff8a86c9d5dc956e4780fb49
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100258
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-08-07 09:43:44 +02:00
Andreas Heinisch 0f6e012057 tdf#133913 - create variable with Variant/Type in StepLOADNC
During the loading of numeric constants in StepLOADNC, create variables
of type Variant and convert them to the requested type, i.e.
Variant/Type in order to prevent type conversion errors, when they are
passed to a method with variant parameter types.

Change-Id: I2ab0111b5b53dd2de9523ba7cf12bd2519d050b0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96402
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-06-16 22:59:30 +02:00
Andreas Heinisch 345cb192f0 tdf#132563 - Convert parameters of type SbxEMPTY
During the construction of the parameter list of a method,
convert parameters of type SbxEMPTY to their requested type,
since missing parameters are handled differently in StepEMPTY,
where separate parameter information (SbxMISSING) is added.

Change-Id: Ie1e027cfdd652404ec29bd3d05e7daf533468936
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96088
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
2020-06-11 15:26:22 +02:00
Andreas Heinisch 3ff159d357 tdf#132389 - case-insensitive operation for non-ASCII characters
Support case-insensitive operation for non-ASCII characters in the
Replace function in Basic.

Change-Id: I48069ad7be1ae0f012c52f595cc44e6b50580b94
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94580
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-05-21 08:50:23 +02:00
Andreas Heinisch 84b884135e tdf#79426, tdf#125180 - Don't convert missing parameters to requested type
If a particular parameter type is requested during the
construction of a parameter list, don't convert missing
parameters to avoid implicit casting to the specified
data type and value of the method.

Missing parameters are handled in StepEMPTY, where
additional information about missing parameters is added.

Change-Id: Ia413b2996d7d1feecedc1dfefaf6baf0fd9d917e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90215
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-04-02 12:57:57 +02:00
Andreas Heinisch 8e323fcace tdf#36737 - Initialize default values of optionals
Initialize default values of optionals in function headers.

In LO Basic, optional parameters are allowed, but without
any default values. Missing parameters will not be initialized
to their respective default values of its datatype, either.

With option Compatible, optional parameters are allowed
with default values. Missing optional parameters that
don't have explicit default values will not be initialized
to their default values of its datatype.

With option VBASupport, optional parameters are allowed with
default values. Missing optional parameters that don't have
explicit default values will be initialized to their default
values of its datatype.

Change-Id: I57aabae5f70d1cf6c4e8feb95ce0db6af753383c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87550
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-03-02 10:08:58 +01:00
LibreOfficiant f9a8d7b5c2 LibO Basic Property Get/Set
Change-Id: I1ef323560ffaacf9e44c8ba9332b825ffc38d59e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/83943
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2020-02-22 11:35:51 +01:00
Stephan Bergmann 5fc8b470f2 tdf#130426 Support Basic Chr(&H8000), ..., Chr(&HFFFF) again
...after it had been broken by d5b7627a0e
"tdf#62326 - Macros: Converting Hex strings of negative value".

The corresponding help update is <https://gerrit.libreoffice.org/c/help/+/89100>
"tdf#130426 Update documentation for Basic Chr and ChrW functions".

Change-Id: I5f08b1ef907d840b491315a1f445f729b4999d0d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89090
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-02-20 15:59:49 +01:00
Andreas Heinisch 4fdc90c51e tdf#97983 - Added localization for numeric types
For numeric types, take into consideration different locales

Change-Id: I815c195e7ef53a7b958f85932415a16c9a8a1e35
Reviewed-on: https://gerrit.libreoffice.org/83683
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2019-11-28 10:21:25 +01:00
LibreOfficiant c9c19fed24 Property Get/Let Basic Statement
My very first Basic TestCase: Assistance/mentoring is welcome

Change-Id: I6399fdb603051792d698695fe659e5a12a0c8396
Reviewed-on: https://gerrit.libreoffice.org/83553
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
2019-11-23 18:14:10 +01:00
Andreas Heinisch d5b7627a0e tdf#62326 - Macros: Converting Hex strings of negative value
If the value of the hex string lies within the range of 0x8000
(SbxMAXINT + 1) and 0xFFFF (SbxMAXUINT) inclusive, cast the value to 16 bit
in order to get signed integers, e.g., SbxMININT through SbxMAXINT.

Moved unit test to test_scanner.cxx in order to test basic hex
convertations. Removed old vba unit tests.

Change-Id: I247b41c40197afc5328ef5685c758c1dd1cefae5
Reviewed-on: https://gerrit.libreoffice.org/79583
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
2019-09-27 18:22:26 +02:00
Andrea Gelmini 938d304f0f Removed executable permission on files
Change-Id: Iea2a937559ac8393c0fb5bf9482115ba162c2a6c
Reviewed-on: https://gerrit.libreoffice.org/79079
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2019-09-18 10:15:21 +02:00
Tomoyuki Kubota ff6383face tdf#118544 set correct type for optional parameter
Change-Id: Id8840431b9dc1f1e97882c675ebfc6456e33d953
Reviewed-on: https://gerrit.libreoffice.org/77684
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-09-17 16:33:33 +02:00
Zdeněk Crhonek 834c7c2698 add test for bug tdf#121337
Change-Id: I26d1d426e6a856b09a48efe8e411b8c54e0f35cf
Reviewed-on: https://gerrit.libreoffice.org/64275
Tested-by: Jenkins
Reviewed-by: Zdenek Crhonek <zcrhonek@gmail.com>
2018-12-03 17:58:38 +01:00
Stephan Bergmann d3368c174f Add reference to test code
...that had inadvertently been missing from the file's inital commit,
a6a48eeef1 "tdf#121325: Replace all of given
length, even if replacement is shorter"

Change-Id: I2a09e1d1ee94480d5615106a4e28958218d9b4c7
Reviewed-on: https://gerrit.libreoffice.org/63334
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-11-13 21:45:37 +01:00
Stephan Bergmann a6a48eeef1 tdf#121325: Replace all of given length, even if replacement is shorter
Both LO and MS Basic restrict the amount of replacement text ("If the Length
parameter in the <emph>Mid statement</emph> is less than the length of the text
that you want to replace, the text is reduced to the specified length." in
helpcontent2/source/text/sbasic/shared/03120306.xhp, resp. "The number of
characters replaced is always less than or equal to the number of characters in
Target." at <https://docs.microsoft.com/en-us/dotnet/visual-basic/
language-reference/statements/mid-statement>).

But cc20344010 "tdf#111313: Honor bWriteNoLenParam
in !bCompatibility, too" had introduced a regression (in the non--compatibility-
mode case), restricting the amount of replaced text to be no more than the
amount of replacement text, even if the given length argument was larger.
(Which had already regressed in the past, see
<https://bugs.documentfoundation.org/show_bug.cgi?id=62090> "Mid statement
doesn't work as expected".)

Added test cases now.

Change-Id: I21d4409f49a2437eb0e1a1e200561d803c42a24c
Reviewed-on: https://gerrit.libreoffice.org/63328
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2018-11-13 15:26:09 +01:00
Mike Kaganski b24b0b9856 tdf#118442: Fix incorrect index calculation
If a number string has leading spaces and/or minus, then calculating
index into the aBuf as the difference between p and pStart gives
wrong (too big) number. This asserts in debug builds, when e.g. an
assignment is made in a BASIC macro:

  Dim f As Double
  f = " -12.20"

"include/rtl/ustrbuf.hxx:490:
sal_Unicode &rtl::OUStringBuffer::operator[](sal_Int32):
Assertion `index >= 0 && index < pData->length' failed."

This affects, e.g., https://gerrit.libreoffice.org/56610 (see
https://ci.libreoffice.org/job/gerrit_linux_clang_dbgutil/9527/consoleFull#1820989527d893063f-7f3d-4b7e-b56f-4e0f225817cd)

Change-Id: I14654166be721907e2a26ea6f4091f203a9437d7
Reviewed-on: https://gerrit.libreoffice.org/56611
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Jenkins
2018-06-29 07:43:52 +02:00
Andrea Gelmini 09425ab9f1 Removed executable permission on data files
chmod -x for .patch, .pptm, and .vb

Change-Id: I98e1221e48df22e8b58aaf305898cbe301f187ce
Reviewed-on: https://gerrit.libreoffice.org/52568
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2018-05-04 03:19:33 +02:00
Mike Kaganski ef117cad3a tdf#108039: check for nullptr in rtl_uString and OUString
rtl_[u]String_newConcat now checks allocation result to return
early and avoid SIGSEGV. Other functions are not modified, to
keep old behavior relying on allocation success and crashing
early on OOM to avoid added overhead in performance-critical
places.

OUString operator+= now checks rtl_uString_newConcat result and
throws std::bad_alloc on failure, to specifically address BASIC
problem. It keeps strong exception guarantee of leaving this'
state unaltered.

Concatenation in BASIC now checks for bad string allocation
(previously SIGSEGV was generated).

Unit test included.

Change-Id: I1513311d3d58eac43b2d2ec9a230e22dff0b4245
Reviewed-on: https://gerrit.libreoffice.org/37965
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Jenkins <ci@libreoffice.org>
2017-06-07 11:48:57 +02:00
Grzegorz Araminowicz f45463d8e2 tdf#93727 Support date literals in basic
* detect #...# in SbiScanner
* add vb test
* made date locale-independent

Change-Id: Ic269df2df8d3a7c5af7858c3655bb40a0b6033f0
Reviewed-on: https://gerrit.libreoffice.org/36002
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Eike Rathke <erack@redhat.com>
2017-05-24 18:55:45 +02:00
Eike Rathke c52f2780b5 Add two digit year test for CDateToIso()
Change-Id: I69f067327504023a2f2439a73cdb1fc6a703aa39
2017-05-03 16:37:50 +02:00
Eike Rathke 1b13548f33 BASIC: handle the full tools::Date range from -32768-01-01 to 32767-12-31
* Input of two-digit years only possible through CDateFromIso() though to
  maintain compatibility with previous behavior and also VBA mode.
* VBA mode restricted to years 1..9999

Change-Id: Ia9574c3bf136619b4831b349d263c96b162d1ed4
2017-05-02 15:56:20 +02:00
Eike Rathke af754ef9d6 Add unit test for CDateFromIso with YYYY-MM-DD, tdf#106956
Change-Id: Id7867228c091bb60764225a6436087dd390f13de
2017-04-28 15:46:33 +02:00
Tor Lillqvist 90aac3a3fd Our GetSystemTicks can now again return negative 32-bit values on Windows
See 93bde31562 .

Change-Id: Ib41c2d525faab2bedab10f91c3a4f62f94870e10
2017-02-07 11:55:55 +02:00
Stephan Bergmann b6988293c1 Revert "Remove test_getsystemticks_method.vb for now"
This reverts commit 93a8ebac2d, now that
fce604c8ae "[API CHANGE] return unsigned 64-bit
value from GetSystemTicks in basic code" is in.
2017-01-09 14:25:54 +01:00
Stephan Bergmann 93a8ebac2d Remove test_getsystemticks_method.vb for now
Introduced with 060c2b9b1b "QA Basic: split tests
of methods in different files", but GetSystemTicks appears to routinely return
negative values.

Change-Id: Ibccdf753aea581e05e9d4e1bf551ae72dc70c959
2017-01-09 10:53:30 +01:00
Laurent Balland-Poirier 060c2b9b1b QA Basic: split tests of methods in different files
Following resolution of "Missing TAN method" [1]
as discussed on dev list [2]
a large majority of methods are now tested
with (almost) one method per file

Missing methods:
- colors failed: RED, GREEN, BLUE
- file methods: DIR, CHDRIVE, EOF,...
- financial methods calling Calc functions: IPmt, IRR,...
- not totaly implemented methods (?): ROUND, WAITUNTIL...

[1] https://bugs.documentfoundation.org/show_bug.cgi?id=102872
[2] http://nabble.documentfoundation.org/QA-test-for-BASIC-functions-tt4202257.html

Change-Id: I2b2824b5b18a2cfbbee2bbc5369e9e2b9e5c930b
Reviewed-on: https://gerrit.libreoffice.org/32519
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
2017-01-06 09:35:44 +00:00
Laurent Balland-Poirier 40578897d3 basic: cleanup test_*_methods
cleanup
remove duplicate test with other tests

Change-Id: I4c82ad9f226f25080199ac0dc3815492fc4c265a
Reviewed-on: https://gerrit.libreoffice.org/31860
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Arnaud Versini <arnaud.versini@libreoffice.org>
2016-12-24 16:28:28 +00:00
Arnaud Versini 8d43bc6ce8 basic: cleanup test_math_methods
Change-Id: I11b3ca4c55151de7403ff9980ada9958d8ef12dc
Reviewed-on: https://gerrit.libreoffice.org/31592
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Laurent BP <laurent.balland-poirier@laposte.net>
2016-12-04 12:21:05 +00:00
Laurent Balland-Poirier 8a50ea5454 tdf#102872 Add qa unit test for BASIC methods
Add test if several methods still works

Change-Id: I8d26e5e3555dbbc0f07152138e1bc0cd65d90998
Reviewed-on: https://gerrit.libreoffice.org/30166
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: jan iversen <jani@documentfoundation.org>
Tested-by: jan iversen <jani@documentfoundation.org>
Reviewed-by: Laurent BP <laurent.balland-poirier@laposte.net>
2016-11-22 09:30:41 +00:00
Julien Nabet 4e00df4f0b Related fdo#87834: add 2 unit tests
Change-Id: I4735b15c9535dc17665629510fdafe3dd4086e0b
Reviewed-on: https://gerrit.libreoffice.org/13708
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
2015-01-23 20:33:19 +00:00
Julien Nabet 0bc1246745 Rename "Mid" unit tests to distinguish cases with 2 and 3 args
Change-Id: Ie9241d0a28dc3871c9242123c9f000100e1a2fa1
2014-12-30 22:04:18 +01:00
Julien Nabet 4eda1a0293 Add some unit-tests for Mid vb function (includes fdo#73771)
Change-Id: Ib5ee18207897cbe16a818096769cdb055dc9dad7
Reviewed-on: https://gerrit.libreoffice.org/7583
Reviewed-by: Noel Power <noel.power@suse.com>
Tested-by: Noel Power <noel.power@suse.com>
2014-01-22 13:56:51 +00:00
Noel Power fbf8ae8241 fix for fdo#62323 fix duplicated and wrong tests
Change-Id: I73dc238f7de59367a0a9d00e5421ea6675b4f556
2013-08-20 09:12:59 +01:00
Noel Power 4c9a08e78b fix for fdo#62323 bad conversion of Hex strings for certain values
Basic hex literals are basic Integer ( e.g. 4 byte ) types with
-2,147,483,648 through 2,147,483,647 range. Interally the scanner
was using a long to form/scan the literal, this led to bad behaviour
on 64bit linux ( where normally long -> 8 bytes )

Change-Id: I1d0fcc55ed0eda636da1445329737d1684e69f33
2013-08-20 08:59:54 +01:00
Noel Power f69acf929b another variation of the localised Cdbl test
Change-Id: Icf6dd7428cb88f1891c6d816a24a4126ea2cc135
2013-03-21 11:33:53 +00:00
Noel Power bc3a099974 tweak basic_coverage test to support locale specific testing
in basic some function results are influenced by locale, now
in the basic_coverage directory you can have sub dirs ( named
by the proper locale e.g. de-DE etc. ) and any macros found
there will be run in the desired locale

Change-Id: I625ee58d37493f83a15a62214bde6708e8fa75f7
2013-03-20 18:46:21 +00:00
Noel Power 6d0f1f6639 fix for fdo#60065
squash errors trying to gain object for rhs ( where no object yet exists (

Change-Id: I81548d1c6a32f0445dc18e31c84c3df85163ed45
2013-02-05 10:36:05 +00:00
Norbert Thiebaud b68a0f6595 basic add a generic unit test fixture
basic_coverage is a generic unit test that scan
qa/basic_coverage/*

each file there is supposed to be a well formed Basic script
that define as least a Function doUnitTest as Integer
that return 1 if OK, 0 if not OK

Change-Id: I6c3cfac1e7ce4748f46c04344102a0eff69b6a49
2012-11-03 20:24:28 -05:00