dbaccess/Module_dbaccess.mk               |    5 +
 dbaccess/UITest_edit_field.mk             |   20 +++++
 dbaccess/qa/uitest/data/tdf75509.odb      |binary
 dbaccess/qa/uitest/edit_field/tdf75509.py |  115 ++++++++++++++++++++++++++++++
 4 files changed, 140 insertions(+)

New commits:
commit c7b3ea692f293346fbbdf2a391d9d971c34fa1f2
Author:     Neil Roberts <[email protected]>
AuthorDate: Tue Oct 28 14:26:27 2025 +0100
Commit:     Xisco Fauli <[email protected]>
CommitDate: Thu Oct 30 11:32:04 2025 +0100

    tdf#75509 Add a UITest
    
    Change-Id: I523e49b6711944b68e99324385df6c9188c0cd6c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193174
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <[email protected]>

diff --git a/dbaccess/Module_dbaccess.mk b/dbaccess/Module_dbaccess.mk
index f368fcc33e19..27da2e72c70e 100644
--- a/dbaccess/Module_dbaccess.mk
+++ b/dbaccess/Module_dbaccess.mk
@@ -89,6 +89,11 @@ $(eval $(call gb_Module_add_screenshot_targets,dbaccess,\
 ))
 
 endif
+
+$(eval $(call gb_Module_add_uicheck_targets,dbaccess,\
+    UITest_edit_field \
+))
+
 endif
 
 # vim: set noet sw=4 ts=4:
diff --git a/dbaccess/UITest_edit_field.mk b/dbaccess/UITest_edit_field.mk
new file mode 100644
index 000000000000..36053699487c
--- /dev/null
+++ b/dbaccess/UITest_edit_field.mk
@@ -0,0 +1,20 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_UITest_UITest,edit_field))
+
+$(eval $(call gb_UITest_add_modules,edit_field,$(SRCDIR)/dbaccess/qa/uitest,\
+       edit_field/ \
+))
+
+$(eval $(call gb_UITest_set_defs,edit_field, \
+    TDOC="$(SRCDIR)/dbaccess/qa/uitest/data" \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/dbaccess/qa/uitest/data/tdf75509.odb 
b/dbaccess/qa/uitest/data/tdf75509.odb
new file mode 100644
index 000000000000..ad75091de8c3
Binary files /dev/null and b/dbaccess/qa/uitest/data/tdf75509.odb differ
diff --git a/dbaccess/qa/uitest/edit_field/tdf75509.py 
b/dbaccess/qa/uitest/edit_field/tdf75509.py
new file mode 100644
index 000000000000..0efbd11d117e
--- /dev/null
+++ b/dbaccess/qa/uitest/edit_field/tdf75509.py
@@ -0,0 +1,115 @@
+# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+from uitest.framework import UITestCase
+from uitest.uihelper.common import get_url_for_data_file, get_state_as_dict
+
+from libreoffice.uno.propertyvalue import mkPropertyValues
+
+from com.sun.star.util import URL
+
+#Bug 75509 - Incorrect display of digits in default Numeric formatting
+#            of a field when language isn't English
+class tdf75509(UITestCase):
+    def execute_for_frame(self, xFrame, command):
+        url = URL()
+        url.Complete = command
+        xUrlTransformer = 
self.xContext.ServiceManager.createInstanceWithContext(
+            "com.sun.star.util.URLTransformer", self.xContext)
+        _, url = xUrlTransformer.parseStrict(url)
+
+        xDispatch = xFrame.queryDispatch(url, "", 0)
+        xDispatch.dispatch(url, [])
+
+    def test_tdf75509(self):
+        # The sample file is an HSQLDB database with a single table. Aside 
from the primary key, the
+        # table has two numeric type fields each with 2 decimal places. One of 
them is called
+        # “FrenchField” and is set to a French locale (ie, the decimal 
separator is “,”) and the
+        # other is called “EnglishField” and is set to a US English locale.
+        with self.ui_test.load_file(get_url_for_data_file("tdf75509.odb")) as 
document:
+            xDbWindow = self.xUITest.getTopFocusWindow()
+
+            self.xUITest.executeCommand(".uno:DBViewTables")
+
+            # We just want to select the single table in the list of tables 
but it seems difficult
+            # to get access to the treeview window for it because there are 
multiple treeviews in a
+            # hierarchy of windows with no name. However AppController handles 
SelectAll and that
+            # does the trick
+            self.xUITest.executeCommand(".uno:SelectAll")
+
+            self.xUITest.executeCommand(".uno:DBTableEdit")
+
+            xTableWindow = self.xUITest.getTopFocusWindow()
+
+            xTableEditor = xTableWindow.getChild("DBTableEditor")
+
+            # Select the “FrenchField” row
+            xTableEditor.executeAction("TYPE", mkPropertyValues({"KEYCODE": 
"DOWN"}))
+
+            # Type a value with the comma decimal separator into the default 
value field
+            xDefaultValue = xTableWindow.getChild("DefaultValue")
+
+            xDefaultValue.executeAction("FOCUS", tuple())
+            xDefaultValue.executeAction("SET", mkPropertyValues({"TEXT": 
"3,14"}))
+
+            # Focus something else so that the example text will get updated
+            xTableEditor.executeAction("FOCUS", tuple())
+
+            # The example format should be updated to reflect the default value
+            xFormatText = xTableWindow.getChild("FormatText")
+            self.assertEqual(get_state_as_dict(xFormatText)["Text"], "3,14")
+
+            # Select the “EnglishField"
+            xTableEditor.executeAction("TYPE", mkPropertyValues({"KEYCODE": 
"DOWN"}))
+
+            # Perform the same tests with the “.” decimal separator
+            xDefaultValue.executeAction("FOCUS", tuple())
+            xDefaultValue.executeAction("SET", mkPropertyValues({"TEXT": 
"2.72"}))
+            xTableEditor.executeAction("FOCUS", tuple())
+            self.assertEqual(get_state_as_dict(xFormatText)["Text"], "2.72")
+
+            # Save the table (ie, just the table, not the actual database file 
to disk)
+            
self.execute_for_frame(self.ui_test.get_desktop().getCurrentFrame(), 
".uno:Save")
+
+            self.xUITest.executeCommand(".uno:DBTableOpen")
+
+            xTableWindow = self.xUITest.getTopFocusWindow()
+
+            # Focus the “FrenchField” input in the table
+            xGrid = xTableWindow.getChild("DBGrid")
+            xGrid.executeAction("FOCUS", tuple())
+            xGrid.executeAction("TYPE", mkPropertyValues({"KEYCODE": "TAB"}))
+
+            # It should have the default value with a comma separator
+            xEdit = self.xUITest.getFocusWindow()
+            self.assertEqual(get_state_as_dict(xEdit)["Text"], "3,14")
+
+            # Focus the “EnglishField” input in the table
+            xGrid.executeAction("TYPE", mkPropertyValues({"KEYCODE": "TAB"}))
+
+            # It should have the default value with a dot separator
+            xEdit = self.xUITest.getFocusWindow()
+            self.assertEqual(get_state_as_dict(xEdit)["Text"], "2.72")
+
+            # Modify the field so that the we can save the record
+            xEdit.executeAction("SET", mkPropertyValues({"TEXT": "2.71"}))
+
+            
self.execute_for_frame(self.ui_test.get_desktop().getCurrentFrame(),
+                                   ".uno:RecSave")
+
+            # Check that the default values actually entered the database
+            xDbController = 
self.ui_test.get_desktop().getActiveFrame().getController()
+            xConnection = xDbController.ActiveConnection
+            xStatement = xConnection.createStatement()
+            xResultSet = xStatement.executeQuery("SELECT \"FrenchField\", 
\"EnglishField\" "
+                                                 "FROM \"Table1\"")
+            self.assertTrue(xResultSet.next())
+            self.assertEqual(xResultSet.getString(1), "3.14")
+            self.assertEqual(xResultSet.getString(2), "2.71")
+
+# vim: set shiftwidth=4 softtabstop=4 expandtab:

Reply via email to