xref: /haiku/src/tests/kits/app/broster/BRosterCases (revision 6a6ef24013aec70a373be152442c2cf5496aba7c)
1BRoster()
2none
3
4bool IsRunning(const char *signature) const
5case 1:	signature is NULL =>
6		Should return false.
7case 2:	signature is not NULL, but no app with this signature is running =>
8		Should return false.
9case 3:	signature is not NULL and an (two) app(s) with this signature is (are)
10		running; quit one; quit the second one =>
11		Should return true; true; false.
12
13bool IsRunning(entry_ref *ref) const
14case 1:	ref is NULL =>
15		Should return false.
16case 2:	ref is not NULL, but no app with this ref is running =>
17		Should return false.
18case 3:	ref is not NULL and an (two) app(s) with this ref is (are)
19		running; quit one; quit the second one =>
20		Should return true; true; false.
21
22team_id TeamFor(const char *signature) const
23case 1:	signature is NULL =>
24		Should return B_BAD_VALUE.
25case 2:	signature is not NULL, but no app with this signature is running =>
26		Should return B_ERROR.
27case 3:	signature is not NULL and an (two) app(s) with this signature is (are)
28		running; quit one; quit the second one =>
29		Should return the ID of one of the teams; the ID of the second team;
30		B_ERROR.
31
32team_id TeamFor(entry_ref *ref) const
33case 1:	ref is NULL =>
34		Should return B_BAD_VALUE.
35case 2:	ref is not NULL, but no app with this ref is running =>
36		Should return B_ERROR.
37case 3:	ref is not NULL and an (two) app(s) with this ref is (are)
38		running; quit one; quit the second one =>
39		Should return the ID of one of the teams; the ID of the second team;
40		B_ERROR.
41
42status_t GetAppInfo(const char *signature, app_info *info) const
43case 1:	signature is NULL or info is NULL =>
44		Should return B_BAD_VALUE.
45case 2:	signature/info are not NULL, but no app with this signature is
46		running =>
47		Should return B_ERROR.
48case 3:	signature/info are not NULL and an (two) app(s) with this signature
49		is (are) running; quit one; quit the second one =>
50		Should
51		- fill the app info with the data of one of the apps and return B_OK;
52		- fill the app info with the data of the second apps and return B_OK;
53		- return B_ERROR.
54
55status_t GetAppInfo(entry_ref *ref, app_info *info) const
56case 1:	ref is NULL or info is NULL =>
57		Should return B_BAD_VALUE.
58case 2:	ref/info are not NULL, but no app with this ref is running =>
59		Should return B_ERROR.
60case 3:	ref/info are not NULL and an (two) app(s) with this ref
61		is (are) running; quit one; quit the second one =>
62		Should
63		- fill the app info with the data of one of the apps and return B_OK;
64		- fill the app info with the data of the second apps and return B_OK;
65		- return B_ERROR.
66
67status_t GetRunningAppInfo(team_id team, app_info *info) const
68case 1:	info is NULL =>
69		Should return B_BAD_VALUE.
70case 2:	info is not NULL, but no app with the team ID is running =>
71		Should return B_BAD_TEAM_ID, if team >= 0, B_ERROR otherwise.
72case 3:	info is not NULL, and an app with the team ID is running =>
73		Should fill the app info and return B_OK.
74
75void GetAppList(BList *teamIDList) const
76case 1:	teamIDList is NULL =>
77		Should do nothing.
78case 2:	teamIDList is not NULL and not empty =>
79		Should append the team IDs of all running apps to teamIDList.
80
81void GetAppList(const char *signature, BList *teamIDList) const
82case 1:	signature or teamIDList are NULL =>
83		Should do nothing/should not modify teamIDList.
84case 2:	teamIDList is not NULL and not empty, signature is not NULL, but no
85		app with this signature is running =>
86		Should not modify teamIDList.
87case 3:	teamIDList is not NULL and not empty, signature is not NULL and
88		app(s) with this signature is (are) running =>
89		Should append the team IDs of all running apps with the supplied
90		signature to teamIDList.
91
92status_t FindApp() const: common cases
93case 1:	uninstalled type mimeType =>
94		Should return B_LAUNCH_FAILED_APP_NOT_FOUND.
95case 2:	installed type mimeType, no preferred app =>
96		Should return B_LAUNCH_FAILED_NO_PREFERRED_APP.
97case 3:	installed type mimeType, preferred app, app type not installed,
98		app has no signature =>
99		Should return B_LAUNCH_FAILED_APP_NOT_FOUND.
100case 4:	installed type mimeType, preferred app, app type not installed,
101		app has signature =>
102		Should return B_OK and set the ref to refer to the application's
103		executable. Should install the app type and set the app hint on it.
104case 5:	installed type mimeType, preferred app, app type installed,
105		app has signature =>
106		Should return B_OK and set the ref to refer to the application's
107		executable. Should set the app hint on the app type.
108case 6:	installed type mimeType, preferred app, app type installed,
109		app has signature, app has no execute permission =>
110		Should return B_OK and set the ref to refer to the application's
111		executable. Should set the app hint on the app type.
112case 7:	installed type mimeType, preferred app, app type installed,
113		two apps have the signature =>
114		Should return B_OK and set the ref to refer to the application
115		executable with the most recent modification time. Should set the app
116		hint on the app type.
117case 8:	installed type mimeType, preferred app, app type installed,
118		two apps have the signature, one has a version info, the other one is
119		newer =>
120		Should return B_OK and set the ref to refer to the application
121		executable with version info. Should set the app hint on the app type.
122case 9:	installed type mimeType, preferred app, app type installed,
123		two apps have the signature, both apps have a version info =>
124		Should return B_OK and set the ref to refer to the application
125		executable with the greater version. Should set the app
126		hint on the app type.
127case 10:installed type mimeType, preferred app, app type installed,
128		preferred app type has an app hint that points to an app with a
129		different signature =>
130		Should return B_OK and set the ref to refer to the application's
131		executable. Should remove the incorrect app hint on the app type.
132		(OBOS: Should set the correct app hint.
133		 Don't even return the wrong app?)
134case 11:installed type mimeType, preferred app, app type installed,
135		preferred app type has an app hint pointing to void,
136		a differently named app with this signature exists =>
137		Should return B_OK and set the ref to refer to the application's
138		executable. (not R5: Should update the app hint on the app type?)
139case 12:mimeType is app signature, not installed =>
140		Should return B_OK and set the ref to refer to the application
141		executable. Should set the app hint on the app type.
142case 13:mimeType is installed, but has no preferred application,
143		super type has preferred application =>
144		Should return B_OK and set the ref to refer to the application
145		executable associated with the preferred app of the supertype.
146		Should set the app hint on the app type.
147case 14:installed type mimeType, preferred app, app type not installed,
148		app has signature, app is trash =>
149		Should return B_LAUNCH_FAILED_APP_IN_TRASH.
150case 15:installed type mimeType, preferred app, app type installed,
151		preferred app type has an app hint pointing to void,
152		no app with this signature exists =>
153		Should return B_LAUNCH_FAILED_APP_NOT_FOUND and unset the app type's
154		app hint.
155case 16:installed type mimeType, preferred app, app type installed,
156		preferred app type has an app hint pointing to a cyclic link,
157		no app with this signature exists =>
158		R5: Should return B_OK and set the ref to refer to the link.
159		OBOS: Should return B_LAUNCH_FAILED_APP_NOT_FOUND and unset the app
160		type's app hint.
161
162status_t FindApp(const char *mimeType, entry_ref *app) const
163case 1:	mimeType or app are NULL =>
164		Should return B_BAD_VALUE.
165case 2:	mimeType is invalid =>
166		Should return B_BAD_VALUE.
167case 3:	common tests (all)
168
169status_t FindApp(entry_ref *ref, entry_ref *app) const
170case 1:	ref or app are NULL =>
171		Should return B_BAD_VALUE.
172case 2:	ref doesn't refer to an existing entry =>
173		Should return B_ENTRY_NOT_FOUND.
174case 3:	ref is valid, file has type and preferred app, preferred app is in
175		trash =>
176		Should return B_LAUNCH_FAILED_APP_IN_TRASH.
177case 4:	ref is valid, file has type and preferred app, app type is not
178		installed, app exists and has signature =>
179		Should return B_OK and set the ref to refer to the file's (not the
180		file type's) preferred application's executable. Should install the
181		app type and set the app hint on it.
182case 5:	ref is valid, file has no type, but preferred app, app type is not
183		installed, app exists and has signature =>
184		Should return B_OK and set the ref to refer to the application's
185		executable. Should install the app type and set the app hint on it.
186case 6:	ref is valid, file has type and app hint, the type's preferred app
187		type is not installed, app exists and has signature =>
188		Should return B_OK and set the ref to refer to the file type's
189		preferred application's executable. Should install the app type and
190		set the app hint on it.
191case 7:	ref is valid, file has type, the type's preferred app
192		type is not installed, app exists and has signature, file is
193		executable =>
194		Should return B_OK and set the ref to refer to the file.
195		Should not set the app hint on the app or file type (Why?).
196case 8:	ref is valid and refers to a link to a file, file has type,
197		the type's preferred app type is not installed,
198		app exists and has signature =>
199		Should return B_OK and set the ref to refer to the file type's
200		preferred application's executable. Should install the app type and
201		set the app hint on it.
202case 9:	ref is valid, file has type,
203		common cases 1-14
204case 10:ref is valid, file has no type, sniffing results in a type,
205		type is set on file,
206		common cases 2-14
207case 11:ref is valid and refers to a cyclic link =>
208		Should return B_LAUNCH_FAILED_NO_RESOLVE_LINK.
209case 12:ref is valid and refers to a link to void =>
210		Should return B_LAUNCH_FAILED_NO_RESOLVE_LINK.
211
212status_t Launch() const: common cases
213case 1:	uninstalled type mimeType =>
214		Should return B_LAUNCH_FAILED_APP_NOT_FOUND.
215case 2:	installed type mimeType, no preferred app =>
216		Should return B_LAUNCH_FAILED_NO_PREFERRED_APP.
217case 3:	installed type mimeType, preferred app, app type not installed,
218		app has no signature =>
219		Should return B_LAUNCH_FAILED_APP_NOT_FOUND.
220case 4:	installed type mimeType, preferred app, app type not installed,
221		app has signature =>
222		Should return B_OK and set team to the ID of the team running the
223		application's executable. Should install the app type and set the
224		app hint on it.
225case 5:	installed type mimeType, preferred app, app type installed,
226		app has signature =>
227		Should return B_OK and set team to the ID of the team running the
228		application's executable. Should set the app hint on the app type.
229case 6:	installed type mimeType, preferred app, app type installed,
230		app has signature, app has no execute permission =>
231		Should return B_OK and set team to the ID of the team running the
232		application's executable. Should set the app hint on the app type.
233case 7:	installed type mimeType, preferred app, app type installed,
234		two apps have the signature =>
235		Should return B_OK and set team to the ID of the team running the
236		application executable with the most recent modification time.
237		Should set the app hint on the app type.
238case 8:	installed type mimeType, preferred app, app type installed,
239		two apps have the signature, one has a version info, the other one is
240		newer =>
241		Should return B_OK and set team to the ID of the team running the
242		application executable with version info. Should set the app hint
243		on the app type.
244case 9:	installed type mimeType, preferred app, app type installed,
245		two apps have the signature, both apps have a version info =>
246		Should return B_OK and set team to the ID of the team running the
247		application executable with the greater version. Should set the app
248		hint on the app type.
249case 10:installed type mimeType, preferred app, app type installed,
250		preferred app type has an app hint that points to an app with a
251		different signature =>
252		Should return B_OK and set team to the ID of the team running the
253		application's executable. Should remove the incorrect app hint on
254		the app type.
255		(OBOS: Should set the correct app hint.
256		 Don't even run the wrong app?)
257case 11:installed type mimeType, preferred app, app type installed,
258		preferred app type has an app hint pointing to void,
259		a differently named app with this signature exists =>
260		Should return B_OK and set team to the ID of the team running the
261		application's executable.
262		(not R5: Should update the app hint on the app type?)
263case 12:mimeType is app signature, not installed =>
264		Should return B_OK and set team to the ID of the team running the
265		application executable. Should set the app hint on the app type.
266case 13:mimeType is installed, but has no preferred application,
267		super type has preferred application =>
268		Should return B_OK and set team to the ID of the team running the
269		application executable associated with the preferred app of the
270		supertype. Should set the app hint on the app type.
271case 14:installed type mimeType, preferred app, app type not installed,
272		app has signature, app is trash =>
273		Should return B_LAUNCH_FAILED_APP_IN_TRASH.
274case 15:installed type mimeType, preferred app, app type not installed,
275		app has signature, team is NULL =>
276		Should return B_OK and set team to the ID of the team running the
277		application's executable. Should install the app type and set the
278		app hint on it.
279case 16:launch the app two times: B_MULTIPLE_LAUNCH | B_ARGV_ONLY =>
280		first app:	ArgvReceived(), ReadyToRun(), QuitRequested()
281		second app:	ArgvReceived(), ReadyToRun(), QuitRequested()
282case 17:launch the app two times: B_MULTIPLE_LAUNCH =>
283		first app:	{Message,Argv,Refs}Received()*, ReadyToRun(),
284					QuitRequested()
285		second app:	{Message,Argv,Refs}Received()*, ReadyToRun(),
286					QuitRequested()
287case 18:launch the app two times: B_SINGLE_LAUNCH | B_ARGV_ONLY =>
288		first app:	ArgvReceived(), ReadyToRun(), QuitRequested()
289					(No second ArgvReceived()!)
290		second app:	Launch() fails with B_ALREADY_RUNNING
291case 19:launch the app two times: B_SINGLE_LAUNCH =>
292		first app:	{Message,Argv,Refs}Received()*, ReadyToRun(),
293					{Message,Argv,Refs}Received()*, QuitRequested()
294		second app:	Launch() fails with B_ALREADY_RUNNING
295case 20:launch two apps with the same signature:
296		B_SINGLE_LAUNCH | B_ARGV_ONLY =>
297		first app:	ArgvReceived(), ReadyToRun(), QuitRequested()
298		second app:	ArgvReceived(), ReadyToRun(), QuitRequested()
299case 21:launch two apps with the same signature: B_SINGLE_LAUNCH =>
300		first app:	{Message,Argv,Refs}Received()*, ReadyToRun(),
301					QuitRequested()
302		second app:	{Message,Argv,Refs}Received()*, ReadyToRun(),
303					QuitRequested()
304case 22:launch the app two times: B_EXCLUSIVE_LAUNCH | B_ARGV_ONLY =>
305		first app:	ArgvReceived(), ReadyToRun(), QuitRequested()
306					(No second ArgvReceived()!)
307		second app:	Launch() fails with B_ALREADY_RUNNING
308case 23:launch the app two times: B_EXCLUSIVE_LAUNCH =>
309		first app:	{Message,Argv,Refs}Received()*, ReadyToRun(),
310					{Message,Argv,Refs}Received()*, QuitRequested()
311		second app:	Launch() fails with B_ALREADY_RUNNING
312case 24:launch two apps with the same signature:
313		B_EXCLUSIVE_LAUNCH | B_ARGV_ONLY =>
314		first app:	ArgvReceived(), ReadyToRun(), QuitRequested()
315					(No second ArgvReceived()!)
316		second app:	Launch() fails with B_ALREADY_RUNNING
317case 25:launch two apps with the same signature: B_EXCLUSIVE_LAUNCH =>
318		first app:	{Message,Argv,Refs}Received()*, ReadyToRun(),
319					{Message,Argv,Refs}Received()*, QuitRequested()
320		second app:	Launch() fails with B_ALREADY_RUNNING
321case 26:launch two apps with the same signature:
322		first: B_EXCLUSIVE_LAUNCH,
323		second: B_EXCLUSIVE_LAUNCH | B_ARGV_ONLY =>
324		first app:	{Message,Argv,Refs}Received()*, ReadyToRun(),
325					QuitRequested()
326		second app:	Launch() fails with B_ALREADY_RUNNING
327case 27:launch two apps with the same signature:
328		first: B_EXCLUSIVE_LAUNCH | B_ARGV_ONLY,
329		second: B_EXCLUSIVE_LAUNCH =>
330		first app:	ArgvReceived(), ReadyToRun(), QuitRequested()
331					(No second ArgvReceived()!)
332		second app:	Launch() fails with B_ALREADY_RUNNING
333case 28:installed type mimeType, preferred app, app type installed,
334		preferred app type has an app hint pointing to void,
335		no app with this signature exists =>
336		Should return B_LAUNCH_FAILED_APP_NOT_FOUND and unset the app type's
337		app hint.
338case 29:installed type mimeType, preferred app, app type installed,
339		preferred app type has an app hint pointing to a cyclic link,
340		no app with this signature exists =>
341		Should return
342		OBOS: B_LAUNCH_FAILED_APP_NOT_FOUND and unset the app type's app hint.
343		R5: B_ENTRY_NOT_FOUND or B_LAUNCH_FAILED_NO_RESOLVE_LINK.
344case 30:installed type mimeType, preferred app, app type installed,
345		preferred app type has an app hint that points to an app without a
346		signature, app will pass a different signature to the
347		BApplication constructor =>
348		Should return B_OK and set team to the ID of the team running the
349		application's executable. Should remove the incorrect app hint on
350		the app type. BRoster::GetRunningAppInfo() should return an app_info
351		with the signature passed to the BApplication constructor.
352
353status_t Launch(const char *mimeType, BMessage *initialMsg,
354				team_id *appTeam) const
355case 1:	mimeType is NULL =>
356		Should return B_BAD_VALUE.
357case 2:	mimeType is invalid =>
358		Should return B_BAD_VALUE.
359case 3:	common cases (all)
360case 4:	installed type mimeType, preferred app, app type not installed,
361		app has signature, NULL initialMsg =>
362		Should return B_OK and set team to the ID of the team running the
363		application's executable. Should install the app type and set the
364		app hint on it.
365
366
367status_t Launch(const char *mimeType, BList *messageList,
368				team_id *appTeam) const
369case 1:	mimeType is NULL =>
370		Should return B_BAD_VALUE.
371case 2:	mimeType is invalid =>
372		Should return B_BAD_VALUE.
373case 3:	common cases (all)
374case 4:	installed type mimeType, preferred app, app type not installed,
375		app has signature, NULL messageList =>
376		Should return B_OK and set team to the ID of the team running the
377		application's executable. Should install the app type and set the
378		app hint on it.
379case 5:	installed type mimeType, preferred app, app type not installed,
380		app has signature, empty messageList =>
381		Should return B_OK and set team to the ID of the team running the
382		application's executable. Should install the app type and set the
383		app hint on it.
384
385status_t Launch(const char *mimeType, int argc, char **args,
386				team_id *appTeam) const
387case 1:	mimeType is NULL or argc > 0 and args is NULL =>
388		Should return B_BAD_VALUE.
389case 2:	mimeType is invalid =>
390		Should return B_BAD_VALUE.
391case 3:	common cases (all)
392case 4:	installed type mimeType, preferred app, app type not installed,
393		app has signature, NULL args, argc is 0 =>
394		Should return B_OK and set team to the ID of the team running
395		the application's executable. Should install the app type and set the
396		app hint on it.
397
398status_t Launch(const entry_ref *ref, const BMessage *initialMessage,
399				team_id *app_team) const
400case 1:	ref is NULL =>
401		Should return B_BAD_VALUE.
402case 2:	ref doesn't refer to an existing entry =>
403		Should return B_ENTRY_NOT_FOUND.
404case 3:	ref is valid, file has type and preferred app, app type is not
405		installed, app exists and has signature =>
406		Should return B_OK and set team to the ID of the team running the
407		file's (not the file type's) preferred application's executable.
408		Should install the app type and set the app hint on it.
409case 4:	ref is valid, file has no type, but preferred app, app type is not
410		installed, app exists and has signature =>
411		Should return B_OK and set team to the ID of the team running the
412		application's executable. Should install the app type and set the app
413		hint on it.
414case 5:	ref is valid, file has type and app hint, the type's preferred app
415		type is not installed, app exists and has signature =>
416		Should return B_OK and set team to the ID of the team running the file
417		type's preferred application's executable. Should install the app
418		type and set the app hint on it.
419case 6:	ref is valid, file has type, the type's preferred app
420		type is not installed, app exists and has signature, file has
421		executable permission, but is not executable  =>
422		Should return B_LAUNCH_FAILED_EXECUTABLE.
423		Should not set the app hint on the app or file type.
424case 7:	ref is valid and refers to a link to a file, file has type,
425		the type's preferred app type is not installed,
426		app exists and has signature =>
427		Should return B_OK and set team to the ID of the team running the file
428		type's preferred application's executable. Should install the app
429		type and set the app hint on it.
430case 8:	ref is valid, file has type,
431		common cases 1-14
432case 9:	ref is valid, file has no type, sniffing results in a type,
433		type is set on file,
434		common cases 2-14
435case 10:ref is valid, file has no type, but preferred app, app type is not
436		installed, app exists and has signature, NULL initialMessage =>
437		Should return B_OK and set team to the ID of the team running the
438		application's executable. Should install the app type and set the app
439		hint on it.
440case 11:ref is valid and refers to a cyclic link =>
441		Should return B_LAUNCH_FAILED_NO_RESOLVE_LINK.
442case 12:ref is valid and refers to a link to void =>
443		Should return B_LAUNCH_FAILED_NO_RESOLVE_LINK.
444case 13:ref is valid and refers to an executable without signature =>
445		Should return B_OK and set team to the ID of the team running the
446		application's executable.
447
448
449status_t Launch(const entry_ref *ref, const BList *messageList,
450				team_id *appTeam) const
451case 1:	ref is NULL =>
452		Should return B_BAD_VALUE.
453case 2:	ref doesn't refer to an existing entry =>
454		Should return B_ENTRY_NOT_FOUND.
455case 3:	ref is valid, file has type and preferred app, app type is not
456		installed, app exists and has signature =>
457		Should return B_OK and set team to the ID of the team running the
458		file's (not the file type's) preferred application's executable.
459		Should install the app type and set the app hint on it.
460case 4:	ref is valid, file has no type, but preferred app, app type is not
461		installed, app exists and has signature =>
462		Should return B_OK and set team to the ID of the team running the
463		application's executable. Should install the app type and set the app
464		hint on it.
465case 5:	ref is valid, file has type and app hint, the type's preferred app
466		type is not installed, app exists and has signature =>
467		Should return B_OK and set team to the ID of the team running the file
468		type's preferred application's executable. Should install the app
469		type and set the app hint on it.
470case 6:	ref is valid, file has type, the type's preferred app
471		type is not installed, app exists and has signature, file has
472		executable permission, but is not executable  =>
473		Should return B_LAUNCH_FAILED_EXECUTABLE.
474		Should not set the app hint on the app or file type.
475case 7:	ref is valid and refers to a link to a file, file has type,
476		the type's preferred app type is not installed,
477		app exists and has signature =>
478		Should return B_OK and set team to the ID of the team running the file
479		type's preferred application's executable. Should install the app
480		type and set the app hint on it.
481case 8:	ref is valid, file has type,
482		common cases 1-14
483case 9:	ref is valid, file has no type, sniffing results in a type,
484		type is set on file,
485		common cases 2-14
486case 10:ref is valid, file has no type, but preferred app, app type is not
487		installed, app exists and has signature, NULL messageList =>
488		Should return B_OK and set team to the ID of the team running the
489		application's executable. Should install the app type and set the app
490		hint on it.
491case 11:ref is valid, file has no type, but preferred app, app type is not
492		installed, app exists and has signature, empty messageList =>
493		Should return B_OK and set team to the ID of the team running the
494		application's executable. Should install the app type and set the app
495		hint on it.
496case 12:ref is valid and refers to a cyclic link =>
497		Should return B_LAUNCH_FAILED_NO_RESOLVE_LINK.
498case 13:ref is valid and refers to a link to void =>
499		Should return B_LAUNCH_FAILED_NO_RESOLVE_LINK.
500case 14:ref is valid and refers to an executable without signature =>
501		Should return B_OK and set team to the ID of the team running the
502		application's executable.
503
504status_t Launch(const entry_ref *ref, int argc, const char * const *args,
505				team_id *appTeam) const
506case 1:	ref is NULL =>
507		Should return B_BAD_VALUE.
508case 2:	ref doesn't refer to an existing entry =>
509		Should return B_ENTRY_NOT_FOUND.
510case 3:	ref is valid, file has type and preferred app, app type is not
511		installed, app exists and has signature =>
512		Should return B_OK and set team to the ID of the team running the
513		file's (not the file type's) preferred application's executable.
514		Should install the app type and set the app hint on it.
515		ref is converted to path and added as additional argv.
516case 4:	ref is valid, file has no type, but preferred app, app type is not
517		installed, app exists and has signature =>
518		Should return B_OK and set team to the ID of the team running the
519		application's executable. Should install the app type and set the app
520		hint on it.
521		ref is converted to path and added as additional argv.
522case 5:	ref is valid, file has type and app hint, the type's preferred app
523		type is not installed, app exists and has signature =>
524		Should return B_OK and set team to the ID of the team running the file
525		type's preferred application's executable. Should install the app
526		type and set the app hint on it.
527		ref is converted to path and added as additional argv.
528case 6:	ref is valid, file has type, the type's preferred app
529		type is not installed, app exists and has signature, file has
530		executable permission, but is not executable  =>
531		Should return B_LAUNCH_FAILED_EXECUTABLE.
532		Should not set the app hint on the app or file type.
533case 7:	ref is valid and refers to a link to a file, file has type,
534		the type's preferred app type is not installed,
535		app exists and has signature =>
536		Should return B_OK and set team to the ID of the team running the file
537		type's preferred application's executable. Should install the app
538		type and set the app hint on it.
539		ref is converted to path and added as additional argv.
540case 8:	ref is valid, file has type,
541		common cases 1-14
542		(ref is converted to path and added as additional argv.)
543case 9:	ref is valid, file has no type, sniffing results in a type,
544		type is set on file,
545		common cases 2-14
546		(ref is converted to path and added as additional argv.)
547case 10:ref is valid, file has no type, but preferred app, app type is not
548		installed, app exists and has signature, NULL args, argc is 0 =>
549		Should return B_OK and set team to the ID of the team running the
550		application's executable. Should install the app type and set the app
551		hint on it. argv are ignored.
552case 11:ref is valid, file has no type, but preferred app, app type is not
553		installed, app exists and has signature, NULL args, argc > 0 =>
554		Should return B_OK and set team to the ID of the team running the
555		application's executable. Should install the app type and set the app
556		hint on it. argv are ignored.
557case 12:ref is valid and refers to a cyclic link =>
558		Should return B_LAUNCH_FAILED_NO_RESOLVE_LINK.
559case 13:ref is valid and refers to a link to void =>
560		Should return B_LAUNCH_FAILED_NO_RESOLVE_LINK.
561case 14:ref is valid and refers to an executable without signature =>
562		Should return B_OK and set team to the ID of the team running the
563		application's executable.
564
565