Yes and no. The swiss would write the former, other German speaking (writing) countries would write the latter. It is incorrect in Germany (after ie, au, eu, ... you must not write ss, unless it's a name, such as the city Neuss)
The upper case of weiß would be WEISS. But it's hard from the upper case WEISS to determine if the lower case is weiss or weiß. (This is why one should never write people's names in bibliographies in small caps.)
For a normal ligature, if http://golang.org/src/pkg/unicode/letter_test.go?h=ToLower is anything to go by, then no for your question, but yes to your code, just not the way you think it works. Which is to say, strings.ToUpper("\u0133") appears to produce "\u0132" as a result.
But \u00DF appears to be a special case, as there's no uppercase for it. If I had to guess, I'd say it should return \u00DF. I mean, if I uppercase "+", do I expect something else back? Doubtful.
• NamesList:
= Eszett
• German
• uppercase is "SS"
• in origin a ligature of 017F and 0073
→ (greek small letter beta - 03B2)
→ (latin capital letter sharp s - 1E9E)
(in origin a ligature of 017F and 0073 is not undisputed)
U+1E9E (LATIN CAPITAL LETTER SHARP S ẞ) is not officially allowed in German orthography
• NamesList:
• lowercase is 00DF
→ (latin small letter sharp s - 00DF)
• Designated in Unicode 5.1
In javascript:
Does weiss == weiß ?