1# This file is a Tcl script to test out Tk's Windows specific
2# clipboard code.  It is organized in the standard fashion for Tcl
3# tests.
4#
5# This file contains a collection of tests for one or more of the Tcl
6# built-in commands.  Sourcing this file into Tcl runs the tests and
7# generates output for errors.  No output means no errors were found.
8#
9# Copyright © 1997 Sun Microsystems, Inc.
10# Copyright © 1998-2000 Scriptics Corporation.
11# All rights reserved.
12
13package require tcltest 2.2
14eval tcltest::configure $argv
15tcltest::loadTestedCommands
16namespace import -force tcltest::test
17
18#################################################################
19# Note that some of these tests may fail if another application #
20# is grabbing the clipboard (e.g. an X server, or a VNC viewer) #
21#################################################################
22
23test winClipboard-1.1 {TkSelGetSelection} -constraints win -setup {
24    clipboard clear
25} -body {
26    selection get -selection CLIPBOARD
27} -cleanup {
28    clipboard clear
29} -returnCodes error -result {CLIPBOARD selection doesn't exist or form "STRING" not defined}
30
31test winClipboard-1.2 {TkSelGetSelection} -constraints {
32    win testclipboard
33} -setup {
34    clipboard clear
35} -body {
36    clipboard append {}
37    list [selection get -selection CLIPBOARD] [testclipboard]
38} -cleanup {
39    clipboard clear
40} -result {{} {}}
41
42test winClipboard-1.3 {TkSelGetSelection & TkWinClipboardRender} -constraints {
43    win testclipboard
44} -setup {
45    clipboard clear
46} -body {
47    clipboard append abcd
48    update
49    list [selection get -selection CLIPBOARD] [testclipboard]
50} -cleanup {
51    clipboard clear
52} -result {abcd abcd}
53
54test winClipboard-1.4 {TkSelGetSelection & TkWinClipboardRender} -constraints {
55    win testclipboard
56} -setup {
57    clipboard clear
58} -body {
59    set map [list "\r" "\\r" "\n" "\\n"]
60    clipboard append "line 1\nline 2"
61    list [string map $map [selection get -selection CLIPBOARD]]\
62        [string map $map [testclipboard]]
63} -cleanup {
64    clipboard clear
65} -result [list "line 1\\nline 2" "line 1\\nline 2"]
66
67test winClipboard-1.5 {TkSelGetSelection & TkWinClipboardRender} -constraints {
68    win testclipboard
69} -setup {
70    clipboard clear
71} -body {
72    set map [list "\r" "\\r" "\n" "\\n"]
73    clipboard append "line 1Ç\nline 2"
74    list [string map $map [selection get -selection CLIPBOARD]]\
75        [string map $map [testclipboard]]
76} -cleanup {
77    clipboard clear
78} -result [list "line 1Ç\\nline 2" "line 1Ç\\nline 2"]
79
80test winClipboard-1.6 {TkSelGetSelection & TkWinClipboardRender} -constraints {
81    win testclipboard
82} -setup {
83    clipboard clear
84} -body {
85    clipboard append "привет миф"
86    list [selection get -selection CLIPBOARD] [testclipboard]
87} -cleanup {
88    clipboard clear
89} -result [list "привет миф" "привет миф"]
90
91test winClipboard-2.1 {TkSelUpdateClipboard reentrancy problem} -constraints {
92    win testclipboard
93} -setup {
94    clipboard clear
95} -body {
96    clipboard append -type OUR_ACTION "action data"
97    clipboard append "string data"
98    update
99    list [selection get -selection CLIPBOARD -type OUR_ACTION] [testclipboard]
100} -cleanup {
101    clipboard clear
102} -result {{action data} {string data}}
103
104test winClipboard-2.2 {TkSelUpdateClipboard reentrancy problem} -constraints {
105    win testclipboard
106} -setup {
107    clipboard clear
108} -body {
109    clipboard append -type OUR_ACTION "new data"
110    clipboard append "more data in string"
111    update
112    list [testclipboard] [selection get -selection CLIPBOARD -type OUR_ACTION]
113} -cleanup {
114    clipboard clear
115} -result {{more data in string} {new data}}
116
117# cleanup
118cleanupTests
119return
120
121# Local variables:
122# mode: tcl
123# End:
124