What is happening in both examples of code is that add_filter is not calling a function to accept a return as the new title. The function add_filter expects at least two parameters, the first being a string that contains the 'tag' or name of the filter you would like to use, and the second is mixed. In the case of using a defined function you should use the function name as a string, it can also accept an array for a callback within a namespace, and an anonymous function.
In the case of:
add_filter('wp_title', set_page_title('test'));
The inner most function will be evaluated first, passing its return results to the next outer function.
So...
add_filter('wp_title', set_page_title(other_function(function() {return "real_filter";})));
Would pass the string 'real_filter' to add_filter assuming that all functions between the two pass their input parameters as their return value.
I believe what you would want would be something along the lines of:
function my_title_filter($old_title, $sep, $seplocation) {
// Add some code to determine if/what you want to change your title to.
global $brand;
$title = "Designer " . $brand['name'] . " $sep " . get_bloginfo('name');
return $title;
}
add_filter('wp_title', 'my_title_filter', 10, 3); // 10 is the priority,
// and 3 is the number of arguments the function accepts.
// wp_title can pass 3.
An additional caveat... The filter must be initialized before apply_filters is called. And best practice is to have your function defined prior to calling add_filter.