speechd-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 1/3] add cancel long message test


From: Andrei Kholodnyi
Subject: [PATCH 1/3] add cancel long message test
Date: Sat, 6 Nov 2010 23:27:06 +0100

test produces a long message and then cancels it after 5 secs.
test waits for the SPD_EVENT_CANCEL to verify it was cancelled.
---
 src/tests/Makefile.am               |    5 +-
 src/tests/spd_cancel_long_message.c |  331 +++++++++++++++++++++++++++++++++++
 2 files changed, 335 insertions(+), 1 deletions(-)
 create mode 100644 src/tests/spd_cancel_long_message.c

diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
index ddca638..deb63d8 100644
--- a/src/tests/Makefile.am
+++ b/src/tests/Makefile.am
@@ -32,7 +32,7 @@ $(TESTSUITE): package.m4 testsuite.at $(TESTSUITE_AT)
        mv address@hidden $@
 
 check_PROGRAMS = long_message clibrary clibrary2 run_test connection_recovery \
-               spd_set_notifications_all
+               spd_cancel_long_message spd_set_notifications_all
 
 long_message_SOURCES = long_message.c
 long_message_LDADD = $(c_api)/libspeechd.la -lpthread $(EXTRA_SOCKET_LIBS)
@@ -47,6 +47,9 @@ connection_recovery_SOURCES = connection-recovery.c
 connection_recovery_LDADD = $(c_api)/libspeechd.la \
        -lpthread $(EXTRA_SOCKET_LIBS)
 
+spd_cancel_long_message_SOURCES = spd_cancel_long_message.c
+spd_cancel_long_message_LDADD = $(c_api)/libspeechd.la -lpthread 
$(EXTRA_SOCKET_LIBS)
+
 spd_set_notifications_all_SOURCES = spd_set_notifications_all.c
 spd_set_notifications_all_LDADD = $(c_api)/libspeechd.la -lpthread 
$(EXTRA_SOCKET_LIBS)
 
diff --git a/src/tests/spd_cancel_long_message.c 
b/src/tests/spd_cancel_long_message.c
new file mode 100644
index 0000000..1767bc4
--- /dev/null
+++ b/src/tests/spd_cancel_long_message.c
@@ -0,0 +1,331 @@
+/*
+* spd_cancel_long_message.c - test SPD_CANCEL behaviour
+*
+ * Copyright (C) 2010 Brailcom, o.p.s.
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License version 2 as
+* published by the Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+* See the GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "speechd_types.h"
+#include "libspeechd.h"
+
+#define TEST_NAME __FILE__
+#define TEST_WAIT_COUNT (10)
+static int notification_mask;
+static SPDConnection *spd;
+
+static const char * events[] ={
+    "SPD_EVENT_BEGIN",
+    "SPD_EVENT_END",
+    "SPD_EVENT_INDEX_MARK",
+    "SPD_EVENT_CANCEL",
+    "SPD_EVENT_PAUSE",
+    "SPD_EVENT_RESUME"
+};
+
+/* Callback for Speech Dispatcher notifications */
+static void notification_cb(size_t msg_id, size_t client_id, 
SPDNotificationType type)
+{
+    notification_mask |= (1 << type);
+    printf("notification %s received\n", events[type]);
+}
+
+int main(int argc, char *argv[])
+{
+    int result, count;
+
+    /* Open Speech Dispatcher connection */
+    spd = spd_open(TEST_NAME, __FUNCTION__, NULL, SPD_MODE_THREADED);
+    if (!spd) {
+        printf("Speech-dispatcher: Failed to open connection. \n");
+        exit (1);
+    }
+
+    printf("Speech-dispatcher: connection opened. \n");
+
+    spd->callback_cancel = notification_cb;
+
+    /* Ask Speech Dispatcher to notify us about these events. */
+    result = spd_set_notification_on(spd, SPD_CANCEL);
+    if (result == -1) {
+        printf("Notification SPD_CANCEL not set correctly \n");
+        spd_close(spd);
+        exit(1);
+    }
+
+    /* The message is spoken as TEXT */
+    result = spd_set_data_mode(spd, SPD_DATA_TEXT);
+    if (result == -1) {
+        printf("Could not set spd_set_data_mode() to SPD_DATA_SSML \n");
+        spd_close(spd);
+        exit(1);
+    }
+
+       printf("Sending a long message \n");
+       result = spd_say(spd, SPD_MESSAGE, ""
+"                                              \n"
+"       ALICE'S ADVENTURES IN WONDERLAND by Lewis Carroll.\n"
+"\n"
+"                CHAPTER I: Down the Rabbit-Hole.\n"
+"\n"
+"  Alice was beginning to get very tired of sitting by her sister\n"
+"on the bank, and of having nothing to do:  once or twice she had\n"
+"peeped into the book her sister was reading, but it had no\n"
+"pictures or conversations in it, `and what is the use of a book,'\n"
+"thought Alice `without pictures or conversation?'\n"
+"\n"
+"  So she was considering in her own mind (as well as she could,\n"
+"for the hot day made her feel very sleepy and stupid), whether\n"
+"the pleasure of making a daisy-chain would be worth the trouble\n"
+"of getting up and picking the daisies, when suddenly a White\n"
+"Rabbit with pink eyes ran close by her.\n"
+"\n"
+"  There was nothing so VERY remarkable in that; nor did Alice\n"
+"think it so VERY much out of the way to hear the Rabbit say to\n"
+"itself, `Oh dear!  Oh dear!  I shall be late!'  (when she thought\n"
+"it over afterwards, it occurred to her that she ought to have\n"
+"wondered at this, but at the time it all seemed quite natural);\n"
+"but when the Rabbit actually TOOK A WATCH OUT OF ITS WAISTCOAT-\n"
+"POCKET, and looked at it, and then hurried on, Alice started to\n"
+"her feet, for it flashed across her mind that she had never\n"
+"before seen a rabbit with either a waistcoat-pocket, or a watch to\n"
+"take out of it, and burning with curiosity, she ran across the\n"
+"field after it, and fortunately was just in time to see it pop\n"
+"down a large rabbit-hole under the hedge.\n"
+"\n"
+"  In another moment down went Alice after it, never once\n"
+"considering how in the world she was to get out again.\n"
+"\n"
+"  The rabbit-hole went straight on like a tunnel for some way,\n"
+"and then dipped suddenly down, so suddenly that Alice had not a\n"
+"moment to think about stopping herself before she found herself\n"
+"falling down a very deep well.\n"
+"\n"
+"  Either the well was very deep, or she fell very slowly, for she\n"
+"had plenty of time as she went down to look about her and to\n"
+"wonder what was going to happen next.  First, she tried to look\n"
+"down and make out what she was coming to, but it was too dark to\n"
+"see anything; then she looked at the sides of the well, and\n"
+"noticed that they were filled with cupboards and book-shelves;\n"
+"here and there she saw maps and pictures hung upon pegs.  She\n"
+"took down a jar from one of the shelves as she passed; it was\n"
+"labelled `ORANGE MARMALADE', but to her great disappointment it\n"
+"was empty:  she did not like to drop the jar for fear of killing\n"
+"somebody, so managed to put it into one of the cupboards as she\n"
+"fell past it.\n"
+"\n"
+"  `Well!' thought Alice to herself, `after such a fall as this, I\n"
+"shall think nothing of tumbling down stairs!  How brave they'll\n"
+"all think me at home!  Why, I wouldn't say anything about it,\n"
+"even if I fell off the top of the house!' (Which was very likely\n"
+"true.)\n"
+"\n"
+"  Down, down, down.  Would the fall NEVER come to an end!  `I\n"
+"wonder how many miles I've fallen by this time?' she said aloud.\n"
+"`I must be getting somewhere near the centre of the earth.  Let\n"
+"me see:  that would be four thousand miles down, I think--' (for,\n"
+"you see, Alice had learnt several things of this sort in her\n"
+"lessons in the schoolroom, and though this was not a VERY good\n"
+"opportunity for showing off her knowledge, as there was no one to\n"
+"listen to her, still it was good practice to say it over) `--yes,\n"
+"that's about the right distance--but then I wonder what Latitude\n"
+"or Longitude I've got to?'  (Alice had no idea what Latitude was,\n"
+"or Longitude either, but thought they were nice grand words to\n"
+"say.)\n"
+"\n"
+"  Presently she began again.  `I wonder if I shall fall right\n"
+"THROUGH the earth!  How funny it'll seem to come out among the\n"
+"people that walk with their heads downward!  The Antipathies, I\n"
+"think--' (she was rather glad there WAS no one listening, this\n"
+"time, as it didn't sound at all the right word) `--but I shall\n"
+"have to ask them what the name of the country is, you know.\n"
+"Please, Ma'am, is this New Zealand or Australia?' (and she tried\n"
+"to curtsey as she spoke--fancy CURTSEYING as you're falling\n"
+"through the air!  Do you think you could manage it?)  `And what\n"
+"an ignorant little girl she'll think me for asking!  No, it'll\n"
+"never do to ask:  perhaps I shall see it written up somewhere.'\n"
+"\n"
+"  Down, down, down.  There was nothing else to do, so Alice soon\n"
+"began talking again.  `Dinah'll miss me very much to-night, I\n"
+"should think!'  (Dinah was the cat.)  `I hope they'll remember\n"
+"her saucer of milk at tea-time.  Dinah my dear!  I wish you were\n"
+"down here with me!  There are no mice in the air, I'm afraid, but\n"
+"you might catch a bat, and that's very like a mouse, you know.\n"
+"But do cats eat bats, I wonder?'  And here Alice began to get\n"
+"rather sleepy, and went on saying to herself, in a dreamy sort of\n"
+"way, `Do cats eat bats?  Do cats eat bats?' and sometimes, `Do\n"
+"bats eat cats?' for, you see, as she couldn't answer either\n"
+"question, it didn't much matter which way she put it.  She felt\n"
+"that she was dozing off, and had just begun to dream that she\n"
+"was walking hand in hand with Dinah, and saying to her very\n"
+"earnestly, `Now, Dinah, tell me the truth:  did you ever eat a\n"
+"bat?' when suddenly, thump! thump! down she came upon a heap of\n"
+"sticks and dry leaves, and the fall was over.\n"
+"\n"
+"  Alice was not a bit hurt, and she jumped up on to her feet in a\n"
+"moment:  she looked up, but it was all dark overhead; before her\n"
+"was another long passage, and the White Rabbit was still in\n"
+"sight, hurrying down it.  There was not a moment to be lost:\n"
+"away went Alice like the wind, and was just in time to hear it\n"
+"say, as it turned a corner, `Oh my ears and whiskers, how late\n"
+"it's getting!'  She was close behind it when she turned the\n"
+"corner, but the Rabbit was no longer to be seen:  she found\n"
+"herself in a long, low hall, which was lit up by a row of lamps\n"
+"hanging from the roof.\n"
+"\n"
+"  There were doors all round the hall, but they were all locked;\n"
+"and when Alice had been all the way down one side and up the\n"
+"other, trying every door, she walked sadly down the middle,\n"
+"wondering how she was ever to get out again.\n"
+"\n"
+"  Suddenly she came upon a little three-legged table, all made of\n"
+"solid glass; there was nothing on it except a tiny golden key,\n"
+"and Alice's first thought was that it might belong to one of the\n"
+"doors of the hall; but, alas! either the locks were too large, or\n"
+"the key was too small, but at any rate it would not open any of\n"
+"them.  However, on the second time round, she came upon a low\n"
+"curtain she had not noticed before, and behind it was a little\n"
+"door about fifteen inches high:  she tried the little golden key\n"
+"in the lock, and to her great delight it fitted!\n"
+"\n"
+"  Alice opened the door and found that it led into a small\n"
+"passage, not much larger than a rat-hole:  she knelt down and\n"
+"looked along the passage into the loveliest garden you ever saw.\n"
+"How she longed to get out of that dark hall, and wander about\n"
+"among those beds of bright flowers and those cool fountains, but\n"
+"she could not even get her head though the doorway; `and even if\n"
+"my head would go through,' thought poor Alice, `it would be of\n"
+"very little use without my shoulders.  Oh, how I wish\n"
+"I could shut up like a telescope!  I think I could, if I only\n"
+"know how to begin.'  For, you see, so many out-of-the-way things\n"
+"had happened lately, that Alice had begun to think that very few\n"
+"things indeed were really impossible.\n"
+"\n"
+"  There seemed to be no use in waiting by the little door, so she\n"
+"went back to the table, half hoping she might find another key on\n"
+"it, or at any rate a book of rules for shutting people up like\n"
+"telescopes:  this time she found a little bottle on it, (`which\n"
+"certainly was not here before,' said Alice,) and round the neck\n"
+"of the bottle was a paper label, with the words `DRINK ME'\n"
+"beautifully printed on it in large letters.\n"
+"\n"
+"  It was all very well to say `Drink me,' but the wise little\n"
+"Alice was not going to do THAT in a hurry.  `No, I'll look\n"
+"first,' she said, `and see whether it's marked \"poison\" or not';\n"
+"for she had read several nice little histories about children who\n"
+"had got burnt, and eaten up by wild beasts and other unpleasant\n"
+"things, all because they WOULD not remember the simple rules\n"
+"their friends had taught them:  such as, that a red-hot poker\n"
+"will burn you if you hold it too long; and that if you cut your\n"
+"finger VERY deeply with a knife, it usually bleeds; and she had\n"
+"never forgotten that, if you drink much from a bottle marked\n"
+"`poison,' it is almost certain to disagree with you, sooner or\n"
+"later.\n"
+"\n"
+"  However, this bottle was NOT marked `poison,' so Alice ventured\n"
+"to taste it, and finding it very nice, (it had, in fact, a sort\n"
+"of mixed flavour of cherry-tart, custard, pine-apple, roast\n"
+"turkey, toffee, and hot buttered toast,) she very soon finished\n"
+"it off.\n"
+"\n"
+"  `What a curious feeling!' said Alice; `I must be shutting up\n"
+"like a telescope.'\n"
+"\n"
+"  And so it was indeed:  she was now only ten inches high, and\n"
+"her face brightened up at the thought that she was now the right\n"
+"size for going though the little door into that lovely garden.\n"
+"First, however, she waited for a few minutes to see if she was\n"
+"going to shrink any further:  she felt a little nervous about\n"
+"this; `for it might end, you know,' said Alice to herself, `in my\n"
+"going out altogether, like a candle.  I wonder what I should be\n"
+"like then?'  And she tried to fancy what the flame of a candle is\n"
+"like after the candle is blown out, for she could not remember\n"
+"ever having seen such a thing.\n"
+"\n"
+"  After a while, finding that nothing more happened, she decided\n"
+"on going into the garden at once; but, alas for poor Alice! when\n"
+"she got to the door, she found he had forgotten the little golden\n"
+"key, and when she went back to the table for it, she found she\n"
+"could not possibly reach it:  she could see it quite plainly\n"
+"through the glass, and she tried her best to climb up one of the\n"
+"legs of the table, but it was too slippery; and when she had\n"
+"tired herself out with trying, the poor little thing sat down and\n"
+"cried.\n"
+"\n"
+"  `Come, there's no use in crying like that!' said Alice to\n"
+"herself, rather sharply; `I advise you to leave off this minute!'\n"
+"She generally gave herself very good advice, (though she very\n"
+"seldom followed it), and sometimes she scolded herself so\n"
+"severely as to bring tears into her eyes; and once she remembered\n"
+"trying to box her own ears for having cheated herself in a game\n"
+"of croquet she was playing against herself, for this curious\n"
+"child was very fond of pretending to be two people.  `But it's no\n"
+"use now,' thought poor Alice, `to pretend to be two people!  Why,\n"
+"there's hardly enough of me left to make ONE respectable\n"
+"person!'\n"
+"\n"
+"  Soon her eye fell on a little glass box that was lying under\n"
+"the table:  she opened it, and found in it a very small cake, on\n"
+"which the words `EAT ME' were beautifully marked in currants.\n"
+"`Well, I'll eat it,' said Alice, `and if it makes me grow larger,\n"
+"I can reach the key; and if it makes me grow smaller, I can creep\n"
+"under the door; so either way I'll get into the garden, and I\n"
+"don't care which happens!'\n"
+"\n"
+"  She ate a little bit, and said anxiously to herself, `Which\n"
+"way?  Which way?', holding her hand on the top of her head to\n"
+"feel which way it was growing, and she was quite surprised to\n"
+"find that she remained the same size:  to be sure, this generally\n"
+"happens when one eats cake, but Alice had got so much into the\n"
+"way of expecting nothing but out-of-the-way things to happen,\n"
+"that it seemed quite dull and stupid for life to go on in the\n"
+"common way.\n"
+"\n"
+"  So she set to work, and very soon finished off the cake. ");
+
+    if (result == -1) {
+        printf("spd_say() failed. \n");
+        spd_close(spd);
+        exit(1);
+    }
+
+    printf("Wait 5 secs and then cancel it.\n");
+    sleep(5);
+    result = spd_cancel(spd);
+    if (result == -1) {
+        printf("spd_cancel() failed. \n");
+        spd_close(spd);
+        exit(1);
+    }
+
+    count = 0;
+    while (~notification_mask & SPD_CANCEL) {
+       sleep(1);
+        if (count++ == TEST_WAIT_COUNT) {
+            printf("SPD_CANCEL wait count exceeded\n");
+            spd_close(spd);
+            exit(1);
+       }
+    }
+
+    printf("Message successfuly canceled.\n");
+
+    printf("Speech-dispatcher: connection closed.\n");
+
+    exit(0);
+}
-- 
1.6.0.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]