fix: XString comparison operators #130
                
     Open
            
            
          
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
Adapted from Bioconductor/XVector#6
Scope of this fix has been narrowed to just operating on XString objects (and their comparison(s) with character) rather than all of XVector.
The buggy behavior previously mentioned in the Biostrings TODO has been fixed to the following behavior:
Note that there's a bit of a decision to be made with something like
RNAString("U") < "T"andRNAString("U") == "T". I chose to coerce to BString to use existing previously written methods, since it has consistency with prior work and consistency across inequality and equality comparisons. You could make the argument thatRNAString("U") == "T"if we're always interpreting letters as bases, but then we get into tricky territory with the inequality operators (i.e., who is to say ifDNAString("A") < DNAString("C")? Do bases have an inherent ordering?). This solution seems to be the most internally consistent and closest to the behavior I'd expect as a user. It also results in the fewest confusing error messages (handling cases likeDNAString("C") < "E"is more challenging).Unit tests have been updated. They're a bit verbose so that we could cover a lot of the possible input variable arrangements.