<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="sheet_SpreadsheetViewSettings" script:language="StarBasic">


'*************************************************************************
'
'  Licensed to the Apache Software Foundation (ASF) under one
'  or more contributor license agreements.  See the NOTICE file
'  distributed with this work for additional information
'  regarding copyright ownership.  The ASF licenses this file
'  to you under the Apache License, Version 2.0 (the
'  "License"); you may not use this file except in compliance
'  with the License.  You may obtain a copy of the License at
'  
'    http://www.apache.org/licenses/LICENSE-2.0
'  
'  Unless required by applicable law or agreed to in writing,
'  software distributed under the License is distributed on an
'  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
'  KIND, either express or implied.  See the License for the
'  specific language governing permissions and limitations
'  under the License.
'
'*************************************************************************





' Be sure that all variables are dimensioned:
option explicit



Sub RunTest()

'*************************************************************************
' SERVICE: 
' com.sun.star.sheet.SpreadsheetViewSettings
'*************************************************************************
On Error Goto ErrHndl

    PropertyTester.TestProperty("ShowFormulas")

    PropertyTester.TestProperty("ShowZeroValues")

    PropertyTester.TestProperty("IsValueHighlightingEnabled")

    PropertyTester.TestProperty("ShowNotes")

    PropertyTester.TestProperty("HasVerticalScrollBar")

    PropertyTester.TestProperty("HasHorizontalScrollBar")

    PropertyTester.TestProperty("HasSheetTabs")

    PropertyTester.TestProperty("IsOutlineSymbolsSet")

    PropertyTester.TestProperty("HasColumnRowHeaders")

    PropertyTester.TestProperty("ShowGrid")

    PropertyTester.TestProperty("GridColor")

    PropertyTester.TestProperty("ShowHelpLines")

    PropertyTester.TestProperty("ShowAnchor")

    PropertyTester.TestProperty("ShowPageBreaks")

    PropertyTester.TestProperty("SolidHandles")

    PropertyTester.TestProperty("ShowObjects")

    PropertyTester.TestProperty("ShowCharts")

    PropertyTester.TestProperty("ShowDrawing")

    PropertyTester.TestProperty("HideSpellMarks")

    PropertyTester.TestProperty("ZoomType")

    PropertyTester.TestProperty("ZoomValue")

Exit Sub
ErrHndl:
    Test.Exception()
    resume next
End Sub
</script:module>
