Who is the sleepiest of them all?

Pyth, 12 10 bytes

hoSN%2.:z3

This prints the sleepiest emoticon. Verify all test cases at once in the Pyth Compiler.

Credit goes to @Sp3000 for the idea to use sorting.

How it works

hoSN%2.:z3
              (implicit) Save the in z.
      .:z3    Compute all substrings of length 3.
    %2        Keep every seconds substring. This discards non-emoticons.
 o            Sort the emoticons by the following key:
  SN            Sort the characters of the emoticon.
                This works since '-' < '=' < 'o'.
h             Retrieve the first, minimal element.

Python 2, 54 53 bytes

f=lambda s:s and max((s+' ')[:3],f(s[2:]),key=sorted)

This is a function that returns the face that is most awake.

Many thanks to xnor for providing many tactical tricks to shorten my original algorithm.


CJam, 12 bytes

q3ew2%{$}$0=

This prints the sleepiest emoticon. Try this fiddle or this test suite in the CJam interpreter.

Credit goes to @Sp3000 for the idea to use sorting.

How it works

q            e# Read all input from STDIN.
 3ew         e# Push all overlapping slices of length 3.
    2%       e# Keep every seconds slice. This discards non-emoticons.
      {$}$   e# Sort the slices by their sorted characters.
             e# This works since '-' < '=' < 'o'.
          0= e# Retrieve the first, minimal slice.